persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.cpp
branchRCL_3
changeset 23 26645d81f48d
parent 8 fa9941cf3867
child 24 cc28652e0254
--- a/persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.cpp	Thu Aug 19 11:36:21 2010 +0300
+++ b/persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.cpp	Tue Aug 31 16:57:14 2010 +0300
@@ -704,29 +704,23 @@
 	TInt biggestBlock;
 	TInt firstAvail = myHeap.Available(biggestBlock);
 	
-	aRepository = CSharedRepository::NewL(aUid);
+	TRAPD(err, aRepository = CSharedRepository::NewL(aUid));
 #ifdef CACHE_OOM_TESTABILITY
-	if ((aRepository==NULL)&&!iTrapOOMOnOpen)	
+	if ((err!=KErrNone)&&!iTrapOOMOnOpen)	
 		{
-		User::Leave(KErrNoMemory);
+		User::Leave(err);
 		}
 #endif	
-	if ((aRepository==NULL)&&TServerResources::iCacheManager->Enabled())
+	if ((err!=KErrNone)&&TServerResources::iCacheManager->Enabled())
 		{
 		// If cache enabled, try recovery by releasing the cache
 		TServerResources::iCacheManager->FlushCache(EFalse);
 		// retry
 		aRepository = CSharedRepository::NewL(aUid);
+		err = KErrNone;
 		}
-	// If still no memory, return error
-	if (aRepository==NULL)
-		{
-		User::Leave(KErrNoMemory);
-		}
-	else // successfully created the object, so push it into the cleanup stack
-		{
-		CleanupStack::PushL(aRepository);
-		}
+	User::LeaveIfError(err);
+	CleanupStack::PushL(aRepository);
 		
 	// Now that we have enough memory for the object and constructed it properly
 	// we try to load it. We trap all errors, either from leaving functions or error code