persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.cpp
changeset 51 7d4490026038
parent 40 b8bdbc8f59c7
child 55 44f437012c90
--- a/persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.cpp	Thu Aug 12 11:53:23 2010 +0100
+++ b/persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.cpp	Mon Sep 27 11:59:56 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -720,7 +720,6 @@
 		err = KErrNone;
 		}
 	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
@@ -742,6 +741,8 @@
 #ifdef CACHE_OOM_TESTABILITY
 				if (!iTrapOOMOnOpen)	
 					{
+					delete aRepository;
+					aRepository = NULL;
 					User::Leave(KErrNoMemory);
 					}
 #endif	
@@ -769,7 +770,13 @@
 		}
 	}
 	// If unhandled, leave
+	if(unifiedErrorCode != KErrNone)
+		{
+		delete aRepository;
+		aRepository = NULL;
+		}
 	User::LeaveIfError(unifiedErrorCode);
+	CleanupStack::PushL(aRepository);
 
 	// Otherwise, finalize calulations
 	TInt lastSize = myHeap.Size();