[Avida-SVN] r3040 - in branches/interrupt/source: cpu main

beckma24 at myxo.css.msu.edu beckma24 at myxo.css.msu.edu
Sun Dec 14 21:08:18 PST 2008


Author: beckma24
Date: 2008-12-15 00:08:18 -0500 (Mon, 15 Dec 2008)
New Revision: 3040

Modified:
   branches/interrupt/source/cpu/cHardwareCPU.cc
   branches/interrupt/source/main/cPopulation.cc
Log:
Bug Fix: possiblity deleted organism was being used after delete

Modified: branches/interrupt/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/interrupt/source/cpu/cHardwareCPU.cc	2008-12-15 02:11:26 UTC (rev 3039)
+++ branches/interrupt/source/cpu/cHardwareCPU.cc	2008-12-15 05:08:18 UTC (rev 3040)
@@ -195,6 +195,7 @@
   for (int i = 0; i < NUM_REGISTERS; i++) reg[i] = in_thread.reg[i];
   for (int i = 0; i < NUM_HEADS; i++) heads[i] = in_thread.heads[i];
   stack = in_thread.stack;
+	// what about other stuff?
 }
 
 void cLocalThread::Reset(cWorld* world, cHardwareCPU* in_hardware, int in_id)

Modified: branches/interrupt/source/main/cPopulation.cc
===================================================================
--- branches/interrupt/source/main/cPopulation.cc	2008-12-15 02:11:26 UTC (rev 3039)
+++ branches/interrupt/source/main/cPopulation.cc	2008-12-15 05:08:18 UTC (rev 3040)
@@ -3411,7 +3411,11 @@
   
   cell.GetHardware()->SingleProcess(ctx);    
   
-  if (cur_org->GetPhenotype().GetToDelete() == true) delete cur_org;
+	double merit = cur_org->GetPhenotype().GetMerit().GetDouble();
+  if (cur_org->GetPhenotype().GetToDelete() == true) {
+		delete cur_org;
+		cur_org = NULL;
+	}
   
   m_world->GetStats().IncExecuted();
   resource_count.Update(step_size);
@@ -3422,7 +3426,7 @@
     for(int i = 0; i < GetNumDemes(); i++) GetDeme(i).Update(step_size);
     
     cDeme & deme = GetDeme(GetCell(cell_id).GetDemeID());
-    deme.IncTimeUsed(cur_org->GetPhenotype().GetMerit().GetDouble());
+    deme.IncTimeUsed(merit);
     CheckImplicitDemeRepro(deme);
   }
 }




More information about the Avida-cvs mailing list