X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/138e6f86566611611b1115c957cae0a1c6a85a4b..eb1ee003aa8db4bbfcc49860f6cac03771897500:/src/simix/smx_process.cpp diff --git a/src/simix/smx_process.cpp b/src/simix/smx_process.cpp index 1eb504d23d..b47211a5d4 100644 --- a/src/simix/smx_process.cpp +++ b/src/simix/smx_process.cpp @@ -126,17 +126,24 @@ void SIMIX_process_empty_trash(void) while ((process = (smx_process_t) xbt_swag_extract(simix_global->process_to_destroy))) { XBT_DEBUG("Getting rid of %p",process); - delete process->context; - xbt_dict_free(&process->properties); - xbt_fifo_free(process->comms); - xbt_dynar_free(&process->on_exit); - delete process; + intrusive_ptr_release(process); } } namespace simgrid { namespace simix { +Process::~Process() +{ + delete this->context; + if (this->properties) + xbt_dict_free(&this->properties); + if (this->comms != nullptr) + xbt_fifo_free(this->comms); + if (this->on_exit) + xbt_dynar_free(&this->on_exit); +} + void create_maestro(std::function code) { smx_process_t maestro = nullptr;