Partial fix for bug 2556 - add compilation flag -Wshadow I added -Wshadow and then turned it off again because of massive variable shadowing in the blit macros. Feel free to go through that code and fix these if you want. Just uncomment CheckWarnShadow in configure.in if you want to try this.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6e993a7..e690ba5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -334,6 +334,7 @@ if(USE_GCC OR USE_CLANG)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-multichar")
endif()
endif()
+ #check_c_compiler_flag(-Wshadow HAVE_GCC_WSHADOW)
endif()
if(ASSEMBLY)
diff --git a/configure b/configure
index f6a2960..799d175 100755
--- a/configure
+++ b/configure
@@ -18684,6 +18684,43 @@ $as_echo "$need_gcc_Wno_multichar" >&6; }
fi
}
+CheckWarnShadow()
+{
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC -Wshadow option" >&5
+$as_echo_n "checking for GCC -Wshadow option... " >&6; }
+ have_gcc_Wshadow=no
+
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$save_CFLAGS -Wshadow"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ int x = 0;
+
+int
+main ()
+{
+
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ have_gcc_Wshadow=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gcc_Wshadow" >&5
+$as_echo "$have_gcc_Wshadow" >&6; }
+ CFLAGS="$save_CFLAGS"
+
+ if test x$have_gcc_Wshadow = xyes; then
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -Wshadow"
+ fi
+}
+
CheckWayland()
{
# Check whether --enable-video-wayland was given.
@@ -23337,6 +23374,7 @@ $as_echo "#define SDL_FILESYSTEM_NACL 1" >>confdefs.h
esac
CheckWarnAll
+#CheckWarnShadow
# Verify that we have all the platform specific files we need
diff --git a/configure.in b/configure.in
index 0fc628b..2ea3818 100644
--- a/configure.in
+++ b/configure.in
@@ -1159,6 +1159,28 @@ CheckWarnAll()
fi
}
+dnl See if GCC's -Wshadow is supported.
+CheckWarnShadow()
+{
+ AC_MSG_CHECKING(for GCC -Wshadow option)
+ have_gcc_Wshadow=no
+
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$save_CFLAGS -Wshadow"
+ AC_TRY_COMPILE([
+ int x = 0;
+ ],[
+ ],[
+ have_gcc_Wshadow=yes
+ ])
+ AC_MSG_RESULT($have_gcc_Wshadow)
+ CFLAGS="$save_CFLAGS"
+
+ if test x$have_gcc_Wshadow = xyes; then
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -Wshadow"
+ fi
+}
+
dnl Check for Wayland
CheckWayland()
{
@@ -3216,6 +3238,7 @@ esac
dnl Do this on all platforms, after everything else.
CheckWarnAll
+#CheckWarnShadow
# Verify that we have all the platform specific files we need
diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c
index 7cb4f0c..963b9bd 100644
--- a/src/events/SDL_events.c
+++ b/src/events/SDL_events.c
@@ -302,7 +302,6 @@ SDL_PeepEvents(SDL_Event * events, int numevents, SDL_eventaction action,
For now we'll guarantee it's valid at least until
the next call to SDL_PeepEvents()
*/
- SDL_SysWMEntry *wmmsg;
if (SDL_EventQ.wmmsg_free) {
wmmsg = SDL_EventQ.wmmsg_free;
SDL_EventQ.wmmsg_free = wmmsg->next;
diff --git a/src/events/SDL_gesture.c b/src/events/SDL_gesture.c
index f7a9b4d..46a5546 100644
--- a/src/events/SDL_gesture.c
+++ b/src/events/SDL_gesture.c
@@ -473,7 +473,6 @@ static int SDL_SendDollarRecord(SDL_GestureTouch* touch,SDL_GestureID gestureId)
void SDL_GestureProcessEvent(SDL_Event* event)
{
float x,y;
- SDL_FloatPoint path[DOLLARNPOINTS];
int index;
int i;
float pathDx, pathDy;
@@ -497,6 +496,8 @@ void SDL_GestureProcessEvent(SDL_Event* event)
/* Finger Up */
if (event->type == SDL_FINGERUP) {
+ SDL_FloatPoint path[DOLLARNPOINTS];
+
inTouch->numDownFingers--;
#ifdef ENABLE_DOLLAR