Commit 2a46a9df21c190dcf89cda54b274105735deafa6

Philipp Wiesemann 2014-10-29T20:20:47

Fixed bug 2647 - Memory leak in SDL_AddHintCallback function - SDL_hints.c Nitz Variable entry going out of scope leaks the storage it points to, at: /* Need to add a hint entry for this watcher */ hint = (SDL_Hint *)SDL_malloc(sizeof(*hint)); if (!hint) { return; } Patch is attached.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
diff --git a/src/SDL_hints.c b/src/SDL_hints.c
index 365459e..34bd768 100644
--- a/src/SDL_hints.c
+++ b/src/SDL_hints.c
@@ -149,6 +149,11 @@ SDL_AddHintCallback(const char *name, SDL_HintCallback callback, void *userdata)
         /* Need to add a hint entry for this watcher */
         hint = (SDL_Hint *)SDL_malloc(sizeof(*hint));
         if (!hint) {
+            if(entry)
+            {
+              SDL_free(entry);
+              entry = NULL;
+            }
             return;
         }
         hint->name = SDL_strdup(name);