mpx/playbackframework/playbackserver/src/mpxplaybackserver.cpp
changeset 27 cbb1bfb7ebfb
parent 25 d881023c13eb
child 34 e257e2b6459d
--- a/mpx/playbackframework/playbackserver/src/mpxplaybackserver.cpp	Mon May 03 12:58:40 2010 +0300
+++ b/mpx/playbackframework/playbackserver/src/mpxplaybackserver.cpp	Fri May 14 16:21:14 2010 +0300
@@ -196,8 +196,16 @@
             if (cl->ClientCount()==0)
                 {
                 MPX_DEBUG1("CMPXPlaybackServer::RemoveClient delete a player");
+                CMPXPlaybackEngine* enginePtr = p; 
                 delete p;
-                iPlayers.Remove(i);
+				//Due to callbacks in PlaybackServer we have to remove engine from the iPlayers array after deleting.
+                //enginePtr is a invalid pointer as p is already deleted
+    		    //Find the index of deleted engine using its address
+				TInt engineIndex = iPlayers.Find(enginePtr);
+                if ( engineIndex != KErrNotFound )
+                    {
+                    iPlayers.Remove(engineIndex);
+                    }
                 }
             break;
             }