mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataprovider.cpp
--- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataprovider.cpp Fri Mar 12 15:44:36 2010 +0200
+++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataprovider.cpp Mon Mar 15 12:42:31 2010 +0200
@@ -241,9 +241,9 @@
iIsSessionOpen = EFalse;
TInt count = iActiveProcessors.Count();
PRINT1( _L( "MM MTP => CMediaMtpDataProvider::SessionClosedL, total processor count = %d" ), count );
- for( TInt i = 0; i < count; i++ )
+ while ( count-- )
{
- MMmRequestProcessor* processor = iActiveProcessors[i];
+ MMmRequestProcessor* processor = iActiveProcessors[count];
// replaced for the Request() is invalid sometimes
// TUint32 sessionId( processor->Request().Uint32( TMTPTypeRequest::ERequestSessionID ) );
@@ -255,10 +255,11 @@
{
processor->UsbDisconnect(); // Rollback
- iActiveProcessors.Remove( i );
- if ( i == iActiveProcessor )
+ iActiveProcessors.Remove( count );
+ if ( count == iActiveProcessor )
{
iActiveProcessorRemoved = ETrue;
+ iActiveProcessor = -1; // update iActiveProcessor
}
else
{