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