diff -r f56ec6ce2732 -r 6f9f6e99a23e mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp --- a/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp Tue May 11 16:40:32 2010 +0300 +++ b/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp Tue May 25 13:14:13 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: Extracts metadata from a file -* Version : %version: da1mmcf#38.1.4.2.6.1.12 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: da1mmcf#38.1.4.2.6.1.13 % << Don't touch! Updated by Synergy at check-out. * */ @@ -147,6 +147,10 @@ delete iDrmMediaUtility; delete iTaskTimer; iFile.Close(); + if ( iMedia != NULL ) + { + delete iMedia; + } #ifdef RD_MPX_TNM_INTEGRATION delete iTNManager; if (iTNSyncWait && iTNSyncWait->IsStarted() ) @@ -212,6 +216,7 @@ } aNewProperty = iMedia; + iMedia = NULL; // ownership transferred. CleanUp(); } @@ -811,14 +816,16 @@ void CMPXMetadataExtractor::DoCreateMediaL() { MPX_FUNC("CMPXMetadataExtractor::DoCreateMediaL()"); + MPX_ASSERT( iMedia == NULL ); RArray contentIDs; + CleanupClosePushL( contentIDs ); contentIDs.AppendL( KMPXMediaIdGeneral ); contentIDs.AppendL( KMPXMediaIdAudio ); contentIDs.AppendL( KMPXMediaIdMusic ); contentIDs.AppendL( KMPXMediaIdDrm ); contentIDs.AppendL( KMPXMediaIdMTP ); iMedia = CMPXMedia::NewL( contentIDs.Array() ); - contentIDs.Close(); + CleanupStack::PopAndDestroy( &contentIDs ); // CMPXMedia default types iMedia->SetTObjectValueL( KMPXMediaGeneralType, @@ -1014,7 +1021,10 @@ { MPX_FUNC("CMPXMetadataExtractor::HandleTaskTimerExpired()"); - iTaskTimer->Cancel(); + if ( iTaskTimer && iTaskTimer->IsActive() ) + { + iTaskTimer->Cancel(); + } // execute task at index 0 MPX_TRAPD( error, ExecuteTaskL() ); if ( error || iCancelled ) @@ -1046,6 +1056,7 @@ if ( iObs && !iCancelled ) { iObs->HandleCreateMediaComplete( iMedia, error ); + iMedia = NULL; // ownership transferred. } CleanUp();