Hi,
I've come across a problem with AG_TextPromptOptions which appears to
be related to modal window handling / detaching in general.
The attached code illustrates the problem, but doesn't crash for me
most of the time. The problem is visible in valgrind output (also
attached), though, and my bigger application in which I stumbled across
the problem crashes at that point most of the time.
I reported this to bugzilla as bug #171.
Best regards,
Fabian Svara
#include <agar/core.h>
#include <agar/gui.h>
void popup_react(AG_Event* event)
{
AG_Window *win = AG_PTR(1);
/* This is necessary for the problem to occur. */
AG_TextMsg(AG_MSG_INFO, "...");
AG_ObjectDetach(win);
}
int main(int argc, char** argv)
{
if (AG_InitCore("popup test", 0) == -1)
return -1;
if (AG_InitVideo(800, 600, 32, AG_VIDEO_HWSURFACE) == -1)
return -1;
/* This has to be repeated for the problem to occur. */
prompt();
prompt();
AG_EventLoop();
return 0;
}
void prompt() {
AG_Button *btns[1];
AG_Window *win;
win = AG_TextPromptOptions(btns, 2, "%s", "Testing");
AG_ButtonText(btns[0], "Yes");
AG_SetEvent(btns[0], "button-pushed", popup_react, "%p,%p,%p", win, NULL, NULL);
}
==14117==
==14117== Invalid read of size 1
==14117== at 0x4C299C7: memmove (mc_replace_strmem.c:629)
==14117== by 0x4E5759F: AG_ListRemove (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E5907D: Hidden (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4E594A1: AG_WindowHide (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E58141: Detach (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x5168E9E: AG_ObjectDetach (in
/usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4009E7: popup_react (main.c:10)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4E736FD: MouseButtonUp (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4EDF676: PostMouseButtonUp (in
/usr/local/lib/libag_gui.so.1.0.4)
==14117== Address 0xd1bc440 is 0 bytes after a block of size 240 alloc'd
==14117== at 0x4C275A2: realloc (vg_replace_malloc.c:525)
==14117== by 0x4E57345: AG_TryRealloc (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E573F3: AG_ListAppend (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E58D37: Shown (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4E5941A: AG_WindowShow (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E65CBD: AG_TextMsgS (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E65BC7: AG_TextMsg (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4009DB: popup_react (main.c:8)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4E736FD: MouseButtonUp (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117==
==14117== Invalid read of size 1
==14117== at 0x4C299B8: memmove (mc_replace_strmem.c:629)
==14117== by 0x4E5759F: AG_ListRemove (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E5907D: Hidden (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4E594A1: AG_WindowHide (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E58141: Detach (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x5168E9E: AG_ObjectDetach (in
/usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4009E7: popup_react (main.c:10)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4E736FD: MouseButtonUp (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4EDF676: PostMouseButtonUp (in
/usr/local/lib/libag_gui.so.1.0.4)
==14117== Address 0xd1bc441 is 1 bytes after a block of size 240 alloc'd
==14117== at 0x4C275A2: realloc (vg_replace_malloc.c:525)
==14117== by 0x4E57345: AG_TryRealloc (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E573F3: AG_ListAppend (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E58D37: Shown (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4E5941A: AG_WindowShow (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E65CBD: AG_TextMsgS (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4E65BC7: AG_TextMsg (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x4009DB: popup_react (main.c:8)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117== by 0x4E736FD: MouseButtonUp (in /usr/local/lib/libag_gui.so.1.0.4)
==14117== by 0x5164B3E: AG_PostEvent (in /usr/local/lib/libag_core.so.1.0.4)
==14117==
_______________________________________________
Agar mailing list
[email protected]
http://libagar.org/lists.html