diff options
author | H. Peter Anvin <hpa@zytor.com> | 2010-01-31 11:10:54 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2010-01-31 11:10:54 -0800 |
commit | c6cae247bbefd1693e4ade2236ebc5ee5ea4ed1e (patch) | |
tree | a8d120f368505ea433b51bb8681818354c3a401a | |
parent | ad8aa52f919cbcadeaf9b60609e5a93ea22b0bf1 (diff) | |
download | syslinux-c6cae247bbefd1693e4ade2236ebc5ee5ea4ed1e.tar.gz |
FAT: fix next_sector implementationsyslinux-4.00-pre13
"return ++sector;" is a bit subtle and I brainfarted and changed to
"return sector++;" -- change it to "return sector+1;" to make it
obvious we're not looking for a side effect at all here...
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | core/fs/fat/fat.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/core/fs/fat/fat.c b/core/fs/fat/fat.c index db72bd28..79439e09 100644 --- a/core/fs/fat/fat.c +++ b/core/fs/fat/fat.c @@ -97,17 +97,17 @@ static sector_t get_next_sector(struct fs_info* fs, uint32_t sector) int clust_shift = sbi->clust_shift; if (sector < data_area) { + /* Root directory sector... */ sector++; - /* if we reached the end of root area */ if (sector == data_area) - sector = 0; /* return 0 */ + sector = 0; /* Ran out of root directory, return EOF */ return sector; } data_sector = sector - data_area; - if ((data_sector + 1) & sbi->clust_mask) /* in a cluster */ - return sector++; - + if ((data_sector + 1) & sbi->clust_mask) /* Still in the same cluster */ + return sector+1; /* Next sector inside cluster */ + /* get a new cluster */ cluster = data_sector >> clust_shift; cluster = get_next_cluster(fs, cluster + 2) - 2; |