mufs: optimise memory footprint of find_dirent_size()

tags/0.1.0
S.J.R. van Schaik 8 years ago
parent 6d73d7a655
commit 555e28e229
  1. 16
      source/fs/mufs/dir.c

@ -195,26 +195,24 @@ size_t find_dirent_size(struct mufs *fs, struct mufs_tree *tree,
{
struct flash_dev *dev = fs->dev;
size_t block_size = 1 << dev->log2_block_size;
char data[block_size];
struct mufs_dentry *entry;
struct mufs_dentry entry;
uint32_t offset, len;
va = align(va, dev->log2_block_size);
if (mufs_tree_read(tree, data, va, 1 << dev->log2_block_size) == 0)
return 0;
for (offset = 0; offset < block_size; offset += len) {
entry = (struct mufs_dentry *)(data + offset);
len = sizeof *entry;
len = sizeof entry;
if (block_size - offset < len)
break;
if (!entry->type)
if (mufs_tree_read(tree, &entry, va + offset, sizeof entry) == 0)
break;
if (!entry.type)
break;
len += entry->path_len;
len += entry.path_len;
if (block_size - offset < len)
break;

Loading…
Cancel
Save