|
@@ -61,6 +61,7 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos,
|
|
|
lbaint_t delayed_skipfirst = 0;
|
|
|
lbaint_t delayed_next = 0;
|
|
|
char *delayed_buf = NULL;
|
|
|
+ char *start_buf = buf;
|
|
|
short status;
|
|
|
struct ext_block_cache cache;
|
|
|
|
|
@@ -139,6 +140,7 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos,
|
|
|
}
|
|
|
} else {
|
|
|
int n;
|
|
|
+ int n_left;
|
|
|
if (previous_block_number != -1) {
|
|
|
/* spill */
|
|
|
status = ext4fs_devread(delayed_start,
|
|
@@ -153,8 +155,9 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos,
|
|
|
}
|
|
|
/* Zero no more than `len' bytes. */
|
|
|
n = blocksize - skipfirst;
|
|
|
- if (n > len)
|
|
|
- n = len;
|
|
|
+ n_left = len - ( buf - start_buf );
|
|
|
+ if (n > n_left)
|
|
|
+ n = n_left;
|
|
|
memset(buf, 0, n);
|
|
|
}
|
|
|
buf += blocksize - skipfirst;
|