Fixed bug #329
authorSam Lantinga <slouken@libsdl.org>
Sat, 23 Sep 2006 22:51:37 +0000
changeset 2037 6bb97f41ab4b
parent 2036 12ef90a41631
child 2038 eb5aedc79992
Fixed bug #329 On tracing it turns out to fail from SDL_WM_SetCaption() On going through the function it looks like the SDL_free() function is called every alternate time with an invalid pointer that has already been freed.
include/SDL_compat.h
src/SDL_compat.c
--- a/include/SDL_compat.h	Fri Sep 22 21:52:20 2006 +0000
+++ b/include/SDL_compat.h	Sat Sep 23 22:51:37 2006 +0000
@@ -147,7 +147,7 @@
                                                             surface);
 extern DECLSPEC void SDLCALL SDL_WM_SetCaption(const char *title,
                                                const char *icon);
-extern DECLSPEC void SDLCALL SDL_WM_GetCaption(char **title, char **icon);
+extern DECLSPEC void SDLCALL SDL_WM_GetCaption(const char **title, const char **icon);
 extern DECLSPEC void SDLCALL SDL_WM_SetIcon(SDL_Surface * icon, Uint8 * mask);
 extern DECLSPEC int SDLCALL SDL_WM_IconifyWindow(void);
 extern DECLSPEC int SDLCALL SDL_WM_ToggleFullScreen(SDL_Surface * surface);
--- a/src/SDL_compat.c	Fri Sep 22 21:52:20 2006 +0000
+++ b/src/SDL_compat.c	Sat Sep 23 22:51:37 2006 +0000
@@ -692,14 +692,17 @@
 {
     if (wm_title) {
         SDL_free(wm_title);
+    }
+    if (title) {
+        wm_title = SDL_strdup(title);
     } else {
-        wm_title = SDL_strdup(title);
+        wm_title = NULL;
     }
     SDL_SetWindowTitle(SDL_VideoWindow, wm_title);
 }
 
 void
-SDL_WM_GetCaption(char **title, char **icon)
+SDL_WM_GetCaption(const char **title, const char **icon)
 {
     if (title) {
         *title = wm_title;