From 2419d26724efd804b747be5cfbf1c3332f2a8c9b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 2 Mar 2018 22:53:25 -0800 Subject: [PATCH] Progress fixing bug 4100 - errors and warnings after changeset 11917 Ozkan Sezer 2018-03-02 20:02:37 UTC http://hg.libsdl.org/SDL/rev/d702b0c54e52 resulted in an error and two warnings when compiled with mingw. 1. Error from SDL_windowstaskdialog.h: In file included from src/video/windows/SDL_windowsmessagebox.c:29:0: src/video/windows/SDL_windowstaskdialog.h:23:54: error: expected ')' before 'HWND' This is fixed by removing unnecessary annotations: 2. Warning from SDL_assert.c: src/SDL_assert.c: In function 'SDL_ExitProcess': src/SDL_assert.c:138:1: warning: 'noreturn' function does return Indeed ExitProcess() is prototyped with DECLSPEC_NORETURN, but TerminateProcess() is not. This can be rectified by adding an exit() call in there. Do NOTE, however, that requires building with a libc: 3. Warning from SDL_windowsmessagebox.c: src/video/windows/SDL_windowsmessagebox.c: In function 'WIN_ShowMessageBox': src/video/windows/SDL_windowsmessagebox.c:513:9: warning: 'nCancelButton' may be used uninitialized in this function My lazy solution was manually initializing nCancelButton to 0. --- src/SDL_assert.c | 12 ++++++------ src/video/windows/SDL_windowsmessagebox.c | 1 + src/video/windows/SDL_windowstaskdialog.h | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/SDL_assert.c b/src/SDL_assert.c index bee07a9ed9dfe..355637db97393 100644 --- a/src/SDL_assert.c +++ b/src/SDL_assert.c @@ -120,13 +120,13 @@ static void SDL_GenerateAssertionReport(void) } -static SDL_NORETURN void SDL_ExitProcess(int exitcode) +static void SDL_ExitProcess(int exitcode) { #ifdef __WIN32__ - /* "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); + /* "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__) emscripten_cancel_main_loop(); /* this should "kill" the app. */ @@ -138,7 +138,7 @@ static SDL_NORETURN void SDL_ExitProcess(int exitcode) } -static SDL_NORETURN void SDL_AbortAssertion(void) +static void SDL_AbortAssertion(void) { SDL_Quit(); SDL_ExitProcess(42); diff --git a/src/video/windows/SDL_windowsmessagebox.c b/src/video/windows/SDL_windowsmessagebox.c index ce6813f59610c..a81f9cf096125 100644 --- a/src/video/windows/SDL_windowsmessagebox.c +++ b/src/video/windows/SDL_windowsmessagebox.c @@ -560,6 +560,7 @@ WIN_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid) TaskConfig.cButtons = messageboxdata->numbuttons; pButtons = SDL_malloc(sizeof (TASKDIALOG_BUTTON) * messageboxdata->numbuttons); TaskConfig.nDefaultButton = 0; + nCancelButton = 0; for (i = 0; i < messageboxdata->numbuttons; i++) { pButton = &pButtons[messageboxdata->numbuttons-1-i]; diff --git a/src/video/windows/SDL_windowstaskdialog.h b/src/video/windows/SDL_windowstaskdialog.h index 2d999b78cd46b..549ab260e1edd 100644 --- a/src/video/windows/SDL_windowstaskdialog.h +++ b/src/video/windows/SDL_windowstaskdialog.h @@ -20,7 +20,7 @@ */ #include -typedef HRESULT(CALLBACK *PFTASKDIALOGCALLBACK)(_In_ HWND hwnd, _In_ UINT msg, _In_ WPARAM wParam, _In_ LPARAM lParam, _In_ LONG_PTR lpRefData); +typedef HRESULT(CALLBACK *PFTASKDIALOGCALLBACK)(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, LONG_PTR lpRefData); enum _TASKDIALOG_FLAGS {