X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8cbdfa75bf25f72b01c902f11d78fc97caf243a6..1555ef43eee251e5892a2f7fd49bc96e99d68fef:/src/simix/smx_synchro.cpp diff --git a/src/simix/smx_synchro.cpp b/src/simix/smx_synchro.cpp index 95ff865b0f..305fc32c0f 100644 --- a/src/simix/smx_synchro.cpp +++ b/src/simix/smx_synchro.cpp @@ -7,7 +7,8 @@ #include "src/surf/surf_interface.hpp" #include "smx_private.h" -#include "xbt/log.h" +#include +#include #include "src/simix/SynchroRaw.hpp" @@ -240,8 +241,7 @@ smx_cond_t SIMIX_cond_init(void) smx_cond_t cond = xbt_new0(s_smx_cond_t, 1); cond->sleeping = xbt_swag_new(xbt_swag_offset(p, synchro_hookup)); cond->mutex = nullptr; - cond->refcount_ = 0; - intrusive_ptr_add_ref(cond); + cond->refcount_ = 1; XBT_OUT(); return cond; } @@ -352,12 +352,13 @@ void SIMIX_cond_broadcast(smx_cond_t cond) XBT_OUT(); } -/** - * \brief Destroys a condition. - * - * Destroys and frees the condition's memory. - * \param cond A condition - */ +smx_cond_t SIMIX_cond_ref(smx_cond_t cond) +{ + if (cond != nullptr) + intrusive_ptr_add_ref(cond); + return cond; +} + void SIMIX_cond_unref(smx_cond_t cond) { XBT_IN("(%p)",cond); @@ -372,6 +373,7 @@ void SIMIX_cond_unref(smx_cond_t cond) void intrusive_ptr_add_ref(s_smx_cond_t *cond) { auto previous = (cond->refcount_)++; + xbt_assert(previous != 0); (void) previous; }