diff options
| author | Hardeep Sidhu <dyp@pobox.com> | 2002-08-24 17:00:10 +0000 |
|---|---|---|
| committer | Hardeep Sidhu <dyp@pobox.com> | 2002-08-24 17:00:10 +0000 |
| commit | f9e7ed4694d438fb63bde7fa5169f7b3cb5ad4bb (patch) | |
| tree | 6d67f6ad6734f0fb7826bc8c74f3156238955e10 | |
| parent | 26a50afc8a5f25c5fd9aef85d153a4227359f508 (diff) | |
| download | rockbox-f9e7ed4694d438fb63bde7fa5169f7b3cb5ad4bb.zip rockbox-f9e7ed4694d438fb63bde7fa5169f7b3cb5ad4bb.tar.gz rockbox-f9e7ed4694d438fb63bde7fa5169f7b3cb5ad4bb.tar.bz2 rockbox-f9e7ed4694d438fb63bde7fa5169f7b3cb5ad4bb.tar.xz | |
Data at end of file was not being read if last sector fell on cluster boundary
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1968 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/drivers/fat.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index 6f82f5a..877beff 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c @@ -888,20 +888,21 @@ int fat_read( struct fat_file *file, int sectorcount, void* buf ) return 0; /* find sequential sectors and read them all at once */ - for (i=0; i<sectorcount; i++ ) { + for (i=0; i<sectorcount && sector>0; i++ ) { numsec++; if ( numsec >= fat_bpb.bpb_secperclus ) { cluster = get_next_cluster(cluster); if (!cluster) { /* end of file */ sector = -1; - break; } - - sector = cluster2sec(cluster); - if (sector<0) - return -1; - numsec=0; + else + { + sector = cluster2sec(cluster); + if (sector<0) + return -1; + numsec=0; + } } else sector++; |