diff --git a/m-atomic.h b/m-atomic.h index c7d4f1c7..4db174d0 100644 --- a/m-atomic.h +++ b/m-atomic.h @@ -225,7 +225,8 @@ static inline long long atomic_fetch_unlock (m_mutex_t *lock, long long val) if ( sizeof ((ptr)->__val) <= ATOMICI_MIN_RW_SIZE) { \ (ptr)->__val = (val); \ } else { \ - atomic_store_lock(ptr, val); \ + long long _offset = (val) - (ptr)->__zero; \ + atomic_store_lock(ptr, (ptr)->__zero + _offset); \ } \ } while (0)