diff -r a179b74831c9 -r c1f20ce4abcf userlibandfileserver/fileserver/sfile/sf_memory_client.cpp --- a/userlibandfileserver/fileserver/sfile/sf_memory_client.cpp Thu Aug 19 11:14:22 2010 +0300 +++ b/userlibandfileserver/fileserver/sfile/sf_memory_client.cpp Tue Aug 31 16:34:26 2010 +0300 @@ -144,7 +144,7 @@ iTouchedRegionFlag = 0; iReusablePagePool.Close(); - iReusablePagePool.Reserve(iReservedRegionMarkInSegs); + r = iReusablePagePool.Reserve(iReservedRegionMarkInSegs); if (r != KErrNone) { ASSERT(0); @@ -174,7 +174,8 @@ return addr; } - // if we have used up reserved region, get new pages from reusable pool first + TBool touchedMore = EFalse; + // if we have touched beyond reserved region, get new pages from reusable pool first if (iReusablePagePool.Count()) { addr = iReusablePagePool[0]; @@ -185,7 +186,7 @@ else { addr = iBase + (iTouchedRegionFlag << iSegSizeInBytesLog2); - iTouchedRegionFlag += aSegmentCount; + touchedMore = ETrue; // __PRINT2(_L("!! GROW TOUCHED SEGS: addr=0x%x, touched=%d"), addr, iTouchedRegionFlag); } @@ -201,6 +202,10 @@ if (r != KErrNone) return NULL; + if (touchedMore) + { + iTouchedRegionFlag += aSegmentCount; + } return addr; }