mufs: properly sync file size and check file size in mufs_write() and mufs_read() respectively

This commit is contained in:
S.J.R. van Schaik 2017-06-12 17:30:12 +02:00
parent 496b2182e3
commit ab233bfd33

View file

@ -96,6 +96,9 @@ size_t mufs_read(struct mufs_file *file, void *data, size_t len)
if (!(file->mode & MUFS_READ))
return 0;
if (file->va >= file->tree->file_size)
return 0;
if (!(ret = mufs_tree_read(file->tree, data, file->va, len)))
return 0;
@ -122,8 +125,12 @@ size_t mufs_write(struct mufs_file *file, const void *data, size_t len)
file->va += ret;
if (file->tree->file_size <= file->va && mufs_sync_tree(file->tree) < 0)
return 0;
if (file->tree->file_size <= file->va) {
file->tree->file_size = file->va;
if (mufs_sync_tree(file->tree) < 0)
return 0;
}
return ret;
}