diff -r 73ea206103e6 -r 43365a9b78a3 userlibandfileserver/fileserver/sfile/sf_memory_client.cpp --- a/userlibandfileserver/fileserver/sfile/sf_memory_client.cpp Wed Jun 23 19:44:53 2010 +0300 +++ b/userlibandfileserver/fileserver/sfile/sf_memory_client.cpp Tue Jul 06 15:50:07 2010 +0300 @@ -170,7 +170,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]; @@ -181,7 +182,7 @@ else { addr = iBase + (iTouchedRegionFlag << iSegSizeInBytesLog2); - iTouchedRegionFlag += aSegmentCount; + touchedMore = ETrue; // __PRINT2(_L("!! GROW TOUCHED SEGS: addr=0x%x, touched=%d"), addr, iTouchedRegionFlag); } @@ -197,6 +198,10 @@ if (r != KErrNone) return NULL; + if (touchedMore) + { + iTouchedRegionFlag += aSegmentCount; + } return addr; }