--- 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();