summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/fat.c11
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
547static unsigned int find_free_cluster(unsigned int startcluster) 547static 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;