diff -r 6752808b2036 -r 646a02f170b9 clfwrapper/ClientSrc/CCLFServerProxy.cpp --- a/clfwrapper/ClientSrc/CCLFServerProxy.cpp Fri Feb 19 23:14:48 2010 +0200 +++ b/clfwrapper/ClientSrc/CCLFServerProxy.cpp Fri Mar 12 15:44:28 2010 +0200 @@ -842,9 +842,8 @@ { CUpdateItemsHandler* handler = CUpdateIDsHandler::NewL( aItemIDArray ); - CleanupStack::PushL( handler ); + // Ownership tranferred StartHandlingL( handler ); - CleanupStack::Pop( handler ); return KErrNone; } @@ -879,9 +878,8 @@ return KErrNone; } - CleanupStack::PushL( handler ); + // Ownership tranferred StartHandlingL( handler ); - CleanupStack::Pop( handler ); } CleanupStack::PopAndDestroy( uriArray ); @@ -896,9 +894,8 @@ { CUpdateItemsHandler* handler = CUpdateFoldersHandler::NewL( iMdESession, *iUriArray, this, this, iFs, iHC, iExtensionArray ); - CleanupStack::PushL( handler ); + // Ownership tranferred StartHandlingL( handler ); - CleanupStack::Pop( handler ); return KErrNone; } @@ -1002,6 +999,7 @@ { if ( aHandler ) { + CleanupStack::PushL( aHandler ); // Notify pending active objects about the event. NotifyUpdateEvent( ECLFProcessStartEvent ); @@ -1012,16 +1010,17 @@ { // Remove aHandler, because it is in clean up stack. iUpdateItemsHandlerArray.Remove( iUpdateItemsHandlerArray.Count() - 1 ); + CleanupStack::PopAndDestroy( aHandler ); User::LeaveIfError( err ); } if ( aHandler->AllDone() ) { - delete aHandler; - aHandler = NULL; + CleanupStack::PopAndDestroy( aHandler ); iUpdateItemsHandlerArray.Remove( iUpdateItemsHandlerArray.Count() - 1 ); } else { + CleanupStack::Pop( aHandler ); aHandler->StartScheduler(); } }