aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2026-02-02 11:25:49 +0000
committergingerBill <gingerBill@users.noreply.github.com>2026-02-02 11:25:49 +0000
commitb183b1219c3b336988e53235a0671958b5079c09 (patch)
tree858a4be31d163314d3c466ba73f941beb338e4e8
parent21509ae3f4071dc3c520b4cd58e80ade4be41ce4 (diff)
Revert `mutex_lock` logicbill/fix-data-races-2026-02
-rw-r--r--src/threading.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/threading.cpp b/src/threading.cpp
index d47421a80..d8ae321f5 100644
--- a/src/threading.cpp
+++ b/src/threading.cpp
@@ -367,9 +367,9 @@ gb_internal void semaphore_wait(Semaphore *s) {
gb_internal void mutex_lock(BlockingMutex *m) {
ANNOTATE_LOCK_PRE(m, 0);
- i32 expected = Internal_Mutex_State_Unlocked;
- if (m->state().compare_exchange_strong(expected, Internal_Mutex_State_Locked, std::memory_order_acquire)) {
- mutex_lock_slow(m, expected);
+ i32 v = m->state().exchange(Internal_Mutex_State_Locked, std::memory_order_acquire);
+ if (v != Internal_Mutex_State_Unlocked) {
+ mutex_lock_slow(m, v);
}
ANNOTATE_LOCK_POST(m);
}