diff --git a/base_c/include/embb/base/c/internal/atomic/atomic_variables.h b/base_c/include/embb/base/c/internal/atomic/atomic_variables.h index e0fa02e..f8efa1c 100644 --- a/base_c/include/embb/base/c/internal/atomic/atomic_variables.h +++ b/base_c/include/embb/base/c/internal/atomic/atomic_variables.h @@ -46,7 +46,7 @@ { \ volatile EMBB_ATOMIC_PARAMETER_TYPE_NATIVE internal_variable; \ embb_mutex_t internal_mutex; \ - uint32_t marker; \ + volatile uint32_t marker; \ } EMBB_CAT2(embb_atomic_, EMBB_ATOMIC_PARAMETER_ATOMIC_TYPE_SUFFIX); #else @@ -57,7 +57,7 @@ typedef struct \ { \ volatile EMBB_ATOMIC_PARAMETER_TYPE_NATIVE internal_variable; \ - uint32_t marker; \ + volatile uint32_t marker; \ } EMBB_CAT2(embb_atomic_, EMBB_ATOMIC_PARAMETER_ATOMIC_TYPE_SUFFIX); #endif diff --git a/base_c/src/mutex.c b/base_c/src/mutex.c index 158af1d..ec08649 100644 --- a/base_c/src/mutex.c +++ b/base_c/src/mutex.c @@ -205,5 +205,6 @@ int embb_spin_unlock(embb_spinlock_t* spinlock) { void embb_spin_destroy(embb_spinlock_t* spinlock) { assert(NULL != spinlock); + embb_spin_lock(spinlock); embb_atomic_destroy_int(&spinlock->atomic_spin_variable_); }