diff -r b922b9936679 -r 3f1ffafb31ec omads/omadsextensions/adapters/contacts/src/NSmlContactsDataStore.cpp --- 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();