瀏覽代碼

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

Sam Lantinga 7 月之前
父節點
當前提交
6e0df0af24
共有 1 個文件被更改,包括 8 次插入3 次删除
  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