Selaa lähdekoodia

Reduce the possibility of SDL_LockMutex getting called on a destroyed mutex after SDL_StopEventLoop

Sam Lantinga 8 kuukautta sitten
vanhempi
commit
6e0df0af24
1 muutettua tiedostoa jossa 8 lisäystä ja 3 poistoa
  1. 8 3
      src/events/SDL_events.c

+ 8 - 3
src/events/SDL_events.c

@@ -886,12 +886,17 @@ void SDL_StopEventLoop(void)
     }
     SDL_zero(SDL_EventOK);
 
-    SDL_UnlockMutex(SDL_EventQ.lock);
-
+    SDL_Mutex *lock = NULL;
     if (SDL_EventQ.lock) {
-        SDL_DestroyMutex(SDL_EventQ.lock);
+        lock = SDL_EventQ.lock;
         SDL_EventQ.lock = NULL;
     }
+
+    SDL_UnlockMutex(lock);
+
+    if (lock) {
+        SDL_DestroyMutex(lock);
+    }
 }
 
 // This function (and associated calls) may be called more than once