datacommsserver/esockserver/CoreProviders/src/coretiernotificationactivity.cpp
branchRCL_3
changeset 69 9d7ce34704c8
parent 67 00c6709d25aa
child 70 b564fb5fd78b
--- a/datacommsserver/esockserver/CoreProviders/src/coretiernotificationactivity.cpp	Thu Aug 19 11:05:47 2010 +0300
+++ b/datacommsserver/esockserver/CoreProviders/src/coretiernotificationactivity.cpp	Tue Aug 31 16:25:36 2010 +0300
@@ -168,16 +168,16 @@
 	// set up a session with each collector
 	for (TInt sessionId=0 ; sessionId<aCollectors.Count() ; ++sessionId)
 		{
-		MDataCollector* collector = aCollectors[sessionId];
-		aCollectors[sessionId] = NULL;
-		CleanupStack::PushL(collector);
-		CDataCollectorSession* newCollectorSession = CDataCollectorSession::NewL(collector, *this, sessionId);
-		CleanupStack::Pop(collector);
-		CleanupStack::PushL(newCollectorSession);
-		iCollectorSessions.AppendL(newCollectorSession);
-		CleanupStack::Pop(newCollectorSession);
+		CDataCollectorSession* newCollector = CDataCollectorSession::NewL(aCollectors[sessionId], *this, sessionId );
+		CleanupStack::PushL(newCollector);
+		iCollectorSessions.AppendL(newCollector);
+		CleanupStack::Pop(newCollector);
+		
+		// now owned by the CDataCollectorSession in iCollectorSessions so don't want it to be in the cleanup path twice!
+		aCollectors[sessionId] = 0;
 		}
 
+
 	// Must run session creation and start loops separately in case the initial data fetch is synchronous.
 	// Reasoning:
 	//  when a full set of data for each collector is received, notification is only allowed if all