userlibandfileserver/fileserver/sfile/sf_memory_client.cpp
branchRCL_3
changeset 43 c1f20ce4abcf
parent 42 a179b74831c9
child 44 3e88ff8f41d5
--- 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;
 	}