For menus, only call the user function for closing immediately before closing, fixing memory errors when the user function frees memory
This commit is contained in:
parent
c7f5e7abd4
commit
9f9e35689e
|
@ -4,6 +4,7 @@ D1X-Rebirth Changelog
|
|||
--------
|
||||
arch/sdl/event.c, arch/ogl/gr.c, arch/sdl/gr.c: Exit SDL_PollEvent early if window changes, to avoid menu problems when pressing keys fast; fix 'condition is always false' warning
|
||||
main/inferno.c, main/inferno.h: Rewrite quit system, fixing *many* bugs with it :P
|
||||
main/newmenu: For menus, only call the user function for closing immediately before closing, fixing memory errors when the user function frees memory
|
||||
|
||||
20100721
|
||||
--------
|
||||
|
|
|
@ -1475,7 +1475,7 @@ int newmenu_handler(window *wind, d_event *event, newmenu *menu)
|
|||
if (event->type == EVENT_WINDOW_CLOSED)
|
||||
return 0;
|
||||
|
||||
if (menu->subfunction)
|
||||
if (menu->subfunction && (event->type != EVENT_WINDOW_CLOSE))
|
||||
{
|
||||
int rval = (*menu->subfunction)(menu, event, menu->userdata);
|
||||
if (rval)
|
||||
|
@ -1533,7 +1533,10 @@ int newmenu_handler(window *wind, d_event *event, newmenu *menu)
|
|||
}
|
||||
|
||||
if (window_exists(wind))
|
||||
{
|
||||
(*menu->subfunction)(menu, event, menu->userdata); // can't cancel here - too hard
|
||||
d_free(menu);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
Loading…
Reference in a new issue