diff -r 91d5ad76f5c6 -r 16db3449d7ba mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectreferences.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectreferences.cpp Wed Sep 15 12:45:22 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectreferences.cpp Wed Oct 13 15:06:09 2010 +0300 @@ -204,10 +204,12 @@ PRINT2( _L("MM MTP => CGetObjectReferences::AddReferencesL aRefOwnerSuid = %S, ref count = %d"), &aRefOwnerSuid, count ); // check if references are valid - for ( TInt i = count-1; i >= 0; i-- ) + TInt removeCount = 0; + for ( TInt i = 0; i < count; i++ ) { - TPtrC temp( aReferences[i] ); - PRINT2( _L( "MM MTP <> CGetObjectReferences::AddReferencesL ref[%d]'s name = %S" ), i, &temp ); + TInt index = i - removeCount; + TPtrC temp( aReferences[index] ); + PRINT2( _L( "MM MTP <> CGetObjectReferences::AddReferencesL ref[%d]'s name = %S" ), index, &temp ); PERFLOGSTART( KObjectManagerHandle ); TUint32 handle = iFramework.ObjectMgr().HandleL( temp ); PERFLOGSTOP( KObjectManagerHandle ); @@ -216,7 +218,8 @@ PRINT1( _L( "MM MTP <> CGetObjectReferences::AddReferencesL, [%S] doesn't existed in handle db, remove this from reference array" ), &temp ); // if handle is invalid, remove from reference array - aReferences.Delete( i ); + aReferences.Delete( index, 1 ); + removeCount++; } }