소스 검색

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

Sam Lantinga 8 달 전
부모
커밋
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