--- 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