Hi all,
Mekius recently discovered a nasty segfault when trying to use the Enter
key to dismiss a dialog. As it turns out, this affects all dialogs.
After some digging into evas_callbacks.c I have come up with the
following patch. I didn't commit because I'm not entirely sure that it's
the proper solution, tho it does fix the segfault.
Here is the backtrace:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1215646016 (LWP 5953)]
evas_object_event_callback_call (obj=0x857be20,
type=EVAS_CALLBACK_KEY_DOWN,
event_info=0xbfacbe58) at evas_callbacks.c:259
259 obj->callbacks->walking_list--;
#0 evas_object_event_callback_call (obj=0x857be20,
type=EVAS_CALLBACK_KEY_DOWN, event_info=0xbfacbe58) at
evas_callbacks.c:259
#1 0xb7e09acd in evas_event_feed_key_down (e=0x856a760,
keyname=0x85c4db8 "Return", key=0x8215108 "Return",
string=0x81d49e8 "\r",
compose=0x0, timestamp=55205686, data=0x0) at evas_events.c:820
#2 0xb7ef0480 in _ecore_evas_x_event_key_down (data=0x0, type=10,
event=0x85c74a0) at ecore_evas_x.c:472
#3 0xb7ce0bb6 in _ecore_event_call () at ecore_events.c:428
#4 0xb7ce770e in _ecore_main_loop_iterate_internal (once_only=0)
at ecore_main.c:639
#5 0xb7ce78f7 in ecore_main_loop_begin () at ecore_main.c:79
#6 0x080683b1 in main (argc=1, argv=0xbfacf954) at e_main.c:875
Continuing.
Patch attached.
devilhorns
Index: evas_callbacks.c
===================================================================
RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_callbacks.c,v
retrieving revision 1.30
diff -u -r1.30 evas_callbacks.c
--- evas_callbacks.c 5 Apr 2007 15:40:51 -0000 1.30
+++ evas_callbacks.c 8 Apr 2007 19:45:42 -0000
@@ -243,7 +243,9 @@
default:
break;
}
- obj->callbacks->walking_list++;
+ if (obj->callbacks)
+ obj->callbacks->walking_list++;
+
for (l = *l_mod; l; l = l->next)
{
Evas_Func_Node *fn;
@@ -256,9 +258,12 @@
}
if (obj->delete_me) break;
}
- obj->callbacks->walking_list--;
- if (!obj->callbacks->walking_list)
- evas_object_event_callback_clear(obj);
+ if (obj->callbacks)
+ {
+ obj->callbacks->walking_list--;
+ if (!obj->callbacks->walking_list)
+ evas_object_event_callback_clear(obj);
+ }
if (type == EVAS_CALLBACK_MOUSE_DOWN)
{
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel