# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1363676609 0 # Node ID a3e356948426dcbc6ffe299fdb28e4d843fbd703 # Parent f3ae396b3585981d274ce1147d93f7c0b2d50bd5 Minor signal handler fixes for GTK2 ... prevents crash on exit due to double free(). diff -r f3ae396b3585 -r a3e356948426 gtk/dw.c --- a/gtk/dw.c Mon Mar 18 09:47:55 2013 +0000 +++ b/gtk/dw.c Tue Mar 19 07:03:29 2013 +0000 @@ -13650,6 +13650,7 @@ if(thisfunc) { sigid = _set_signal_handler(thiswindow, window, sigfunc, data, thisfunc); + params[0] = GINT_TO_POINTER(sigid); gtk_object_set_data(GTK_OBJECT(thiswindow), "_dw_tree_item_expand_func", (gpointer)thisfunc); gtk_object_set_data(GTK_OBJECT(thiswindow), "_dw_tree_item_expand_data", GINT_TO_POINTER(sigid)); } @@ -13665,6 +13666,7 @@ cid = g_signal_connect_data(G_OBJECT(thiswindow), "key_press_event", G_CALLBACK(_container_enter_event), params, _dw_signal_disconnect, 0); _set_signal_handler_id(thiswindow, sigid, cid); + params = calloc(sizeof(void *), 3); thisname = "button_press_event"; thisfunc = _findsigfunc(DW_SIGNAL_ITEM_ENTER); } @@ -13713,6 +13715,7 @@ if (!thisfunc || !thiswindow) { + free(params); DW_MUTEX_UNLOCK; return; }