Fix off-by-one in the VirtualFAT cluster chain generator.
authorDean Camera <dean@fourwalledcubicle.com>
Sat, 9 Mar 2013 08:08:31 +0000 (08:08 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Sat, 9 Mar 2013 08:08:31 +0000 (08:08 +0000)
Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.c
Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.h

index 883586c..7a248d8 100644 (file)
@@ -114,7 +114,7 @@ static void ReadBlock(uint16_t BlockNumber)
                        }
 
                        /* Mark last cluster as end of file */
-                       ((uint16_t*)&BlockBuffer)[FILE_CLUSTERS(2049) + 3] = 0xFFFF;
+                       ((uint16_t*)&BlockBuffer)[FILE_CLUSTERS(2049) + 1] = 0xFFFF;
                        break;
 
                case 3:
index 156760a..98ea5cd 100644 (file)
 
        /* Macros: */
                #define FIRMWARE_FILE_SIZE     (FLASHEND + 1UL)
-               #define FILE_CLUSTERS(size)    ((size / CLUSTER_SIZE_BYTES) + ((size % CLUSTER_SIZE_BYTES) ? 1 : 0))
 
                #define SECTOR_SIZE_BYTES      512
                #define SECTOR_PER_CLUSTER     4
                #define CLUSTER_SIZE_BYTES     (SECTOR_PER_CLUSTER * SECTOR_SIZE_BYTES)
+               #define FILE_CLUSTERS(size)    ((size / CLUSTER_SIZE_BYTES) + ((size % CLUSTER_SIZE_BYTES) ? 1 : 0))
 
                #define LUN_MEDIA_BLOCKS       ((FIRMWARE_FILE_SIZE / SECTOR_SIZE_BYTES) + 32)