From 4d3e2e2fad9c23991935f2c871a5b92681c1fca6 Mon Sep 17 00:00:00 2001 From: Bart Oldeman Date: Wed, 17 Jun 2009 22:04:49 +0000 Subject: [PATCH] Use a better formula for calculating FAT12 clusters, by multiplying nominator and denominator by 3. git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1452 6ac86273-5f31-0410-b378-82cca8765d1b --- kernel/initdisk.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/initdisk.c b/kernel/initdisk.c index 65faada..8d8b82a 100644 --- a/kernel/initdisk.c +++ b/kernel/initdisk.c @@ -424,9 +424,9 @@ VOID CalculateFATData(ddt * pddt, ULONG NumSectors, UBYTE FileSystem) fatdat = (unsigned)fatdata; if (fatdata > 32640) fatdat = 32640; - /* The "+2*NSECTOR" is for the reserved first two FAT entries */ - defbpb->bpb_nfsect = cdiv(fatdat + 2 * NSECTORFAT12, - SEC_SIZE * 2 * NSECTORFAT12 / 3 + NFAT); + /* The "+2*NSECTORFAT12" is for the reserved first two FAT entries */ + defbpb->bpb_nfsect = (UWORD)cdiv((fatdat + 2 * NSECTORFAT12) * 3UL, + SEC_SIZE * 2 * NSECTORFAT12 + NFAT*3); #if DEBUG /* Need to calculate number of clusters, since the unused parts of the * FATS and data area together could make up space for an additional,