omads/omadsextensions/adapters/contacts/src/NSmlContactsDataStore.cpp
branchRCL_3
changeset 11 3f1ffafb31ec
parent 10 b922b9936679
child 12 4d5e9526124e
--- a/omads/omadsextensions/adapters/contacts/src/NSmlContactsDataStore.cpp	Fri Mar 12 15:41:30 2010 +0200
+++ b/omads/omadsextensions/adapters/contacts/src/NSmlContactsDataStore.cpp	Mon Mar 15 12:39:28 2010 +0200
@@ -125,7 +125,11 @@
 	iStoreName = NULL;
 	iRetCommand = KErrNone;
 	iLastOperation = ENSmlNone;
-	
+	if(iDeleteAllOperation)
+	    {
+	    delete iDeleteAllOperation;
+	    iDeleteAllOperation = NULL;
+	    }
 	_DBG_FILE("CNSmlContactsDataStore::CNSmlContactsDataStore(): end");
 	}
 	
@@ -202,11 +206,13 @@
 		{
 		TRAP_IGNORE( iChangeFinder->CloseL() );
 		delete iChangeFinder;
+		iChangeFinder = NULL;
 		}
 	
 	if(iIdConverter)
 		{
 		delete iIdConverter;
+		iIdConverter = NULL;
 		}
 	if(iContactLnks)
 		{
@@ -221,6 +227,7 @@
 		{
 		iContactsModsFetcher->CancelRequest(); 
 		delete iContactsModsFetcher;
+		iContactsModsFetcher = NULL;
 		}
 	if ( iContactManager )
 		{
@@ -229,6 +236,7 @@
 			iStore->Close( *this );	
 			}
 	    delete iContactManager;
+	    iContactManager = NULL;
 		}
 	
 	
@@ -275,6 +283,12 @@
 
 	iAddResultArray.Close();
 	
+	if(iDeleteAllOperation)
+	    {
+	    delete iDeleteAllOperation;
+	    iDeleteAllOperation = NULL;
+	    }
+	
 	}
 
 // ----------------------------------------------------------------------------
@@ -360,6 +374,34 @@
 EXPORT_C void CNSmlContactsDataStore::DoCancelRequest()
 	{
 	_DBG_FILE("CNSmlContactsDataStore::DoCancelRequest(): begin");
+	if(iLastOperation == ENSMLDeleteAllOp)
+	    {   
+	    if(iDeleteAllOperation)
+	        {
+	        delete iDeleteAllOperation;
+	        iDeleteAllOperation = NULL;
+	        }
+
+	    if( iChangeFinder )
+	        {
+            TRAP_IGNORE(iChangeFinder->ResetL());
+	        }
+	    iSnapshotRegistered = EFalse;
+
+	    if(iContactLnks)
+	        {
+	        delete iContactLnks;
+	        iContactLnks = NULL;
+			iContactLink = NULL;
+	        }
+
+	    if(iContactViewBase)
+	        {
+	        delete iContactViewBase;
+	        iContactViewBase = NULL;
+	        }
+	    User::RequestComplete( iCallerStatus, KErrCancel );  
+	    }
 		if(iContactsModsFetcher)
 		{
 		iContactsModsFetcher->CancelRequest();