Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix mem leak.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 3 Mar 2021 14:23:41 +0000 (15:23 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 3 Mar 2021 14:23:41 +0000 (15:23 +0100)
src/mc/mc_base.cpp
src/simix/libsmx.cpp

index 3b44ac8..1d81a75 100644 (file)
@@ -33,8 +33,8 @@ int MC_random(int min, int max)
     static simgrid::xbt::random::XbtRandom prng;
     return prng.uniform_int(min, max);
   }
-  auto observer = new simgrid::mc::RandomSimcall(SIMIX_process_self(), min, max);
-  return simgrid::kernel::actor::simcall([observer] { return observer->get_value(); }, observer);
+  simgrid::mc::RandomSimcall observer{SIMIX_process_self(), min, max};
+  return simgrid::kernel::actor::simcall([&observer] { return observer.get_value(); }, &observer);
 }
 
 namespace simgrid {
index fedfec4..a9a37c0 100644 (file)
@@ -355,12 +355,14 @@ void simcall_run_kernel(std::function<void()> const& code, simgrid::mc::SimcallI
 {
   simgrid::kernel::actor::ActorImpl::self()->simcall_.inspector_ = t;
   simcall_BODY_run_kernel(&code);
+  simgrid::kernel::actor::ActorImpl::self()->simcall_.inspector_ = nullptr;
 }
 
 void simcall_run_blocking(std::function<void()> const& code, simgrid::mc::SimcallInspector* t = nullptr)
 {
   simgrid::kernel::actor::ActorImpl::self()->simcall_.inspector_ = t;
   simcall_BODY_run_blocking(&code);
+  simgrid::kernel::actor::ActorImpl::self()->simcall_.inspector_ = nullptr;
 }
 
 int simcall_mc_random(int min, int max) // XBT_ATTRIB_DEPRECATD_v331