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.
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);