diff -r 0ff03867bdb6 -r 39b39e1a406e userlibandfileserver/fileserver/sfile/sf_memory_client.cpp --- a/userlibandfileserver/fileserver/sfile/sf_memory_client.cpp Wed Jul 21 14:46:58 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_memory_client.cpp Thu Jul 22 16:46:39 2010 +0100 @@ -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; }