From 232ae6886439659f3373cab09356bbce3d82f670 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 23 Nov 2016 17:20:28 -0500 Subject: [PATCH] Still more compiler warning fixes for various platforms. --- src/SDL_error.c | 4 +++- src/stdlib/SDL_iconv.c | 1 + src/test/SDL_test_common.c | 4 ++-- src/video/emscripten/SDL_emscriptenopengles.c | 8 ++++++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/SDL_error.c b/src/SDL_error.c index 3fccf6ad3..30756f146 100644 --- a/src/SDL_error.c +++ b/src/SDL_error.c @@ -177,9 +177,11 @@ main(int argc, char *argv[]) /* keep this at the end of the file so it works with GCC builds that don't support "#pragma GCC diagnostic push" ... we'll just leave the warning disabled after this. */ -#ifdef __GNUC__ +/* this pragma arrived in GCC 4.2 and causes a warning on older GCCs! Sigh. */ +#if defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 2)))) #pragma GCC diagnostic ignored "-Wformat-nonliteral" #endif + /* This function has a bit more overhead than most error functions so that it supports internationalization and thread-safe errors. */ diff --git a/src/stdlib/SDL_iconv.c b/src/stdlib/SDL_iconv.c index 34bcd8431..ace2c4e18 100644 --- a/src/stdlib/SDL_iconv.c +++ b/src/stdlib/SDL_iconv.c @@ -38,6 +38,7 @@ If we get this wrong, it's just a warning, so no big deal. */ #if defined(_XGP6) || defined(__APPLE__) || \ + defined(__EMSCRIPTEN__) || \ (defined(__GLIBC__) && ((__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) || \ (defined(_NEWLIB_VERSION))) #define ICONV_INBUF_NONCONST diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index 26f331111..8b25b1276 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -1210,10 +1210,10 @@ SDLTest_PrintEvent(SDL_Event * event) event->tfinger.dx, event->tfinger.dy, event->tfinger.pressure); break; case SDL_DOLLARGESTURE: - SDL_Log("SDL_EVENT: Dollar gesture detect: %lld", (long long) event->dgesture.gestureId); + SDL_Log("SDL_EVENT: Dollar gesture detect: %ld", (long) event->dgesture.gestureId); break; case SDL_DOLLARRECORD: - SDL_Log("SDL_EVENT: Dollar gesture record: %lld", (long long) event->dgesture.gestureId); + SDL_Log("SDL_EVENT: Dollar gesture record: %ld", (long) event->dgesture.gestureId); break; case SDL_MULTIGESTURE: SDL_Log("SDL_EVENT: Multi gesture fingers: %d", event->mgesture.numFingers); diff --git a/src/video/emscripten/SDL_emscriptenopengles.c b/src/video/emscripten/SDL_emscriptenopengles.c index 12a37c604..7cc15bd53 100644 --- a/src/video/emscripten/SDL_emscriptenopengles.c +++ b/src/video/emscripten/SDL_emscriptenopengles.c @@ -39,11 +39,15 @@ Emscripten_GLES_LoadLibrary(_THIS, const char *path) { if (!_this->egl_data) { return SDL_OutOfMemory(); } - + + /* Emscripten forces you to manually cast eglGetProcAddress to the real + function type; grep for "__eglMustCastToProperFunctionPointerType" in + Emscripten's egl.h for details. */ + _this->egl_data->eglGetProcAddress = (void *(EGLAPIENTRY *)(const char *)) eglGetProcAddress; + LOAD_FUNC(eglGetDisplay); LOAD_FUNC(eglInitialize); LOAD_FUNC(eglTerminate); - LOAD_FUNC(eglGetProcAddress); LOAD_FUNC(eglChooseConfig); LOAD_FUNC(eglGetConfigAttrib); LOAD_FUNC(eglCreateContext);