diff -r e7d2d738d3c2 -r 2f92ad2dc5db userlibandfileserver/fileserver/sfat32/sl_mnt32.cpp --- a/userlibandfileserver/fileserver/sfat32/sl_mnt32.cpp Mon Mar 15 12:45:50 2010 +0200 +++ b/userlibandfileserver/fileserver/sfat32/sl_mnt32.cpp Wed Mar 31 23:38:45 2010 +0300 @@ -256,7 +256,7 @@ if(tmp != fatEntry) {//-- write FAT[1] entry to all available FATs - for(TInt i=0; iWrite(pos, ptrFatEntry)); //write FAT32[1] entry @@ -287,7 +287,7 @@ if(tmp != fatEntry) {//-- write FAT[1] entry to all available FATs - for(TInt i=0; iWrite(pos, ptrFatEntry)); //write FAT16[1] entry @@ -367,7 +367,7 @@ const TInt driveNo = Drive().DriveNumber(); - __PRINT2(_L("CFatMountCB::MountL() drv:%d, forceMount=%d\n"),driveNo,aForceMount); + __PRINT3(_L("CFatMountCB::MountL() drv:%d, forceMount=%d, RuggedFAT:%d\n"), driveNo, aForceMount, IsRuggedFSys()); ASSERT(State() == ENotMounted || State() == EDismounted); SetState(EMounting); @@ -476,13 +476,13 @@ {//-- check if volume geometry looks valid - const TInt usableSectors=TotalSectors()-(iFirstFreeByte>>SectorSizeLog2()); + const TUint32 usableSectors = TotalSectors()-(iFirstFreeByte>>SectorSizeLog2()); iUsableClusters=usableSectors>>(ClusterSizeLog2()-SectorSizeLog2()); const TUint32 KMinClusters = 32; //-- absolute minimum number of clusters on the volume const TUint32 KMaxClusters=(TotalSectors()-FirstFatSector()-NumberOfFats()*(FatSizeInBytes()>>SectorSizeLog2())) >> (ClusterSizeLog2()-SectorSizeLog2()); - if(usableSectors <=0 || iUsableClusters < KMinClusters || iUsableClusters > KMaxClusters) + if(iUsableClusters < KMinClusters || iUsableClusters > KMaxClusters) { __PRINT(_L("CFatMountCB::InitializeL() Wrong number of usable cluster/sectors on the volume!")); User::Leave(KErrCorrupt); @@ -493,6 +493,7 @@ //-- CFatMountCB parameters might have changed, e.g. after formatting. Reconstruct directory cache with new parameters delete iRawDisk; + iRawDisk = NULL; iRawDisk=CRawDisk::NewL(*this, aLocDrvCaps); iRawDisk->InitializeL(); @@ -538,6 +539,7 @@ //========== create and initialise FAT table delete iFatTable; + iFatTable = NULL; iFatTable=CFatTable::NewL(*this, aLocDrvCaps); //-- mount the FAT table. Depending on mount parameters and configuration this method @@ -550,19 +552,17 @@ //-- make a callback, telling FileServer about free space discovered. const TInt64 freeSpace = ((TInt64)FAT().NumberOfFreeClusters()) << ClusterSizeLog2(); SetDiskSpaceChange(freeSpace); - //========== create and setup leaf direcotry cache if cache limit is set bigger than one - const TUint32 cacheLimit = iFatConfig.LeafDirCacheSize(); - if (cacheLimit > 1) + //========== create and setup leaf direcotry cache { - // destroy the old leaf dir cache to avoid memory leak. + const TUint32 cacheLimit = Max(iFatConfig.LeafDirCacheSize(), 1lu); + delete iLeafDirCache; + iLeafDirCache = NULL; iLeafDirCache = CLeafDirCache::NewL(cacheLimit); } - else - { - iLeafDirCache = NULL; - } + + __PRINT3(_L("#- CFatMountCB::InitializeL() done. drv:%d, Free clusters:%d, 1st Free cluster:%d"),DriveNumber(), FAT().NumberOfFreeClusters(), FAT().FreeClusterHint()); @@ -881,6 +881,7 @@ nRes = IsFinalised(bFinalised); if(nRes == KErrNone) { + ASSERT(aParam); *((TBool*)aParam) = bFinalised; } @@ -1047,7 +1048,7 @@ TInt cluster=StartCluster(dosEntry); TInt64 pos = aPos; - TInt endCluster; + TUint32 endCluster; TInt clusterSize=1<