--- 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;
}