instead of allocate space of statsMsgsList in constructor (which is on all pes),...
authorGengbin Zheng <gzheng@illinois.edu>
Thu, 8 Apr 2010 19:14:40 +0000 (14:14 -0500)
committerGengbin Zheng <gzheng@illinois.edu>
Thu, 8 Apr 2010 19:14:40 +0000 (14:14 -0500)
src/ck-ldb/CentralLB.C

index aad97b07d08a4645d3638f84090d3b5602bf1624..4364c42ba72108d565a77b3ba1424a5d8d8fa280 100644 (file)
@@ -97,9 +97,7 @@ void CentralLB::initLB(const CkLBOptions &opt)
   if (opt.getSeqNo() > 0) turnOff();
 
   stats_msg_count = 0;
   if (opt.getSeqNo() > 0) turnOff();
 
   stats_msg_count = 0;
-  statsMsgsList = new CLBStatsMsg*[CkNumPes()];
-  for(int i=0; i < CkNumPes(); i++)
-    statsMsgsList[i] = 0;
+  statsMsgsList = NULL;
 
   statsData = new LDStats;
 
 
   statsData = new LDStats;
 
@@ -435,6 +433,13 @@ void CentralLB::depositData(CLBStatsMsg *m)
 void CentralLB::ReceiveStats(CkMarshalledCLBStatsMessage &msg)
 {
 #if CMK_LBDB_ON
 void CentralLB::ReceiveStats(CkMarshalledCLBStatsMessage &msg)
 {
 #if CMK_LBDB_ON
+  if (statsMsgsList == NULL) {
+    statsMsgsList = new CLBStatsMsg*[CkNumPes()];
+    CmiAssert(statsMsgsList != NULL);
+    for(int i=0; i < CkNumPes(); i++)
+      statsMsgsList[i] = 0;
+  }
+
     //  loop through all CLBStatsMsg in the incoming msg
   int count = msg.getCount();
   for (int num = 0; num < count; num++) 
     //  loop through all CLBStatsMsg in the incoming msg
   int count = msg.getCount();
   for (int num = 0; num < count; num++)