mufs: optimise memory footprint of find_dirent_size()
This commit is contained in:
parent
6d73d7a655
commit
555e28e229
1 changed files with 7 additions and 9 deletions
|
@ -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;
|
||||
|
||||
len += entry->path_len;
|
||||
if (!entry.type)
|
||||
break;
|
||||
|
||||
len += entry.path_len;
|
||||
|
||||
if (block_size - offset < len)
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue