diff -r 5af6c74cd793 -r af6ec97d9189 userlibandfileserver/fileserver/sfile/sf_memory_client.cpp --- a/userlibandfileserver/fileserver/sfile/sf_memory_client.cpp Wed Jun 23 11:59:44 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_memory_client.cpp Wed Jun 23 12:52:28 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; }