소스 검색

assert: Use TerminateProcess() on Windows, vs ExitProcess (thanks, Jack!).

"What I have done is use TerminateProcess rather than ExitProcess.
ExitProcess will cause Microsoft's leak detection to continue, TerminateProcess
won't. It is also technically wrong to use ExitProcess in the case of aborting
the application.

Jack Powell
Twitter @jack9267"
Ryan C. Gordon 8 년 전
부모
커밋
8536130aa2
1개의 변경된 파일5개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      src/SDL_assert.c

+ 5 - 1
src/SDL_assert.c

@@ -123,7 +123,11 @@ static void SDL_GenerateAssertionReport(void)
 static SDL_NORETURN void SDL_ExitProcess(int exitcode)
 static SDL_NORETURN void SDL_ExitProcess(int exitcode)
 {
 {
 #ifdef __WIN32__
 #ifdef __WIN32__
-    ExitProcess(exitcode);
+    /* "if you do not know the state of all threads in your process, it is
+       better to call TerminateProcess than ExitProcess"
+       https://msdn.microsoft.com/en-us/library/windows/desktop/ms682658(v=vs.85).aspx */
+    TerminateProcess(GetCurrentProcess(), exitcode);
+
 #elif defined(__EMSCRIPTEN__)
 #elif defined(__EMSCRIPTEN__)
     emscripten_cancel_main_loop();  /* this should "kill" the app. */
     emscripten_cancel_main_loop();  /* this should "kill" the app. */
     emscripten_force_exit(exitcode);  /* this should "kill" the app. */
     emscripten_force_exit(exitcode);  /* this should "kill" the app. */