summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHardeep Sidhu <dyp@pobox.com>2002-08-24 17:00:10 +0000
committerHardeep Sidhu <dyp@pobox.com>2002-08-24 17:00:10 +0000
commitf9e7ed4694d438fb63bde7fa5169f7b3cb5ad4bb (patch)
tree6d67f6ad6734f0fb7826bc8c74f3156238955e10
parent26a50afc8a5f25c5fd9aef85d153a4227359f508 (diff)
downloadrockbox-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.c15
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++;