mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovider.cpp
branchRCL_3
changeset 15 d240f0a77280
parent 14 05b0d2323768
child 17 780c925249c1
--- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovider.cpp	Fri Mar 12 15:44:36 2010 +0200
+++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovider.cpp	Mon Mar 15 12:42:31 2010 +0200
@@ -238,12 +238,10 @@
     iIsSessionOpen = EFalse;
     TInt count = iActiveProcessors.Count();
     PRINT1( _L( "MM MTP => CAbstractMediaMtpDataProvider::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 ) );
         TUint32 sessionId = processor->SessionId();
 
         if ( ( sessionId == aSession.iMTPId )
@@ -252,10 +250,11 @@
             {
             processor->UsbDisconnect(); // Rollback
 
-            iActiveProcessors.Remove( i );
-            if ( i == iActiveProcessor )
+            iActiveProcessors.Remove( count );
+            if ( count == iActiveProcessor )
                 {
                 iActiveProcessorRemoved = ETrue;
+                iActiveProcessor = -1;  // update iActiveProcessor
                 }
             else
                 {