src/SDL_assert.c
changeset 3662 6a0b3048f271
parent 3661 22b6a0c7ea6e
child 3664 8bdc37b1a52a
--- a/src/SDL_assert.c	Wed Jan 13 09:13:37 2010 +0000
+++ b/src/SDL_assert.c	Wed Jan 13 09:44:17 2010 +0000
@@ -351,8 +351,19 @@
                     int line)
 {
     static int assertion_running = 0;
+    static SDL_SpinLock spinlock = 0;
     SDL_assert_state state = SDL_ASSERTION_IGNORE;
 
+    SDL_AtomicLock(&spinlock);
+    if (assertion_mutex == NULL) { /* never called SDL_Init()? */
+        assertion_mutex = SDL_CreateMutex();
+        if (assertion_mutex == NULL) {
+            SDL_AtomicUnlock(&spinlock);
+            return SDL_ASSERTION_IGNORE;   /* oh well, I guess. */
+        }
+    }
+    SDL_AtomicUnlock(&spinlock);
+
     if (SDL_LockMutex(assertion_mutex) < 0) {
         return SDL_ASSERTION_IGNORE;   /* oh well, I guess. */
     }