From 93423c1c467fd73c44541d065efaffdfeafaf550 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 2 Sep 2024 08:18:25 -0700
Subject: [PATCH] spin_acquire_lock() takes a volatile pointer parameter
---
src/stdlib/SDL_malloc.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/stdlib/SDL_malloc.c b/src/stdlib/SDL_malloc.c
index 24c8f51b588ba..350709e32b13c 100644
--- a/src/stdlib/SDL_malloc.c
+++ b/src/stdlib/SDL_malloc.c
@@ -1907,9 +1907,9 @@ static FORCEINLINE void x86_clear_lock(int* sl) {
#if !defined(USE_RECURSIVE_LOCKS) || USE_RECURSIVE_LOCKS == 0
/* Plain spin locks use single word (embedded in malloc_states) */
-static int spin_acquire_lock(int *sl) {
+static int spin_acquire_lock(volatile long *sl) {
int spins = 0;
- while (*(volatile int *)sl != 0 || CAS_LOCK(sl)) {
+ while (*sl != 0 || CAS_LOCK(sl)) {
if ((++spins & SPINS_PER_YIELD) == 0) {
SPIN_LOCK_YIELD;
}
@@ -1917,7 +1917,7 @@ static int spin_acquire_lock(int *sl) {
return 0;
}
-#define MLOCK_T int
+#define MLOCK_T volatile long
#define TRY_LOCK(sl) !CAS_LOCK(sl)
#define RELEASE_LOCK(sl) CLEAR_LOCK(sl)
#define ACQUIRE_LOCK(sl) (CAS_LOCK(sl)? spin_acquire_lock(sl) : 0)