diff options
-rw-r--r-- | firmware/drivers/fat.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index 92ac2a3bf8..099417baca 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c | |||
@@ -546,10 +546,17 @@ static void *cache_fat_sector(int fatsector) | |||
546 | 546 | ||
547 | static unsigned int find_free_cluster(unsigned int startcluster) | 547 | static unsigned int find_free_cluster(unsigned int startcluster) |
548 | { | 548 | { |
549 | unsigned int sector = startcluster / CLUSTERS_PER_FAT_SECTOR; | 549 | unsigned int sector; |
550 | unsigned int offset = startcluster % CLUSTERS_PER_FAT_SECTOR; | 550 | unsigned int offset; |
551 | unsigned int i; | 551 | unsigned int i; |
552 | 552 | ||
553 | /* Cluster 0 and 1 are reserved */ | ||
554 | if(startcluster < 2) | ||
555 | startcluster = 2; | ||
556 | |||
557 | sector = startcluster / CLUSTERS_PER_FAT_SECTOR; | ||
558 | offset = startcluster % CLUSTERS_PER_FAT_SECTOR; | ||
559 | |||
553 | for (i = 0; i<fat_bpb.fatsize; i++) { | 560 | for (i = 0; i<fat_bpb.fatsize; i++) { |
554 | unsigned int j; | 561 | unsigned int j; |
555 | unsigned int nr = (i + sector) % fat_bpb.fatsize; | 562 | unsigned int nr = (i + sector) % fat_bpb.fatsize; |