changeset 1867:a3e356948426

Minor signal handler fixes for GTK2 ... prevents crash on exit due to double free().
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 19 Mar 2013 07:03:29 +0000
parents f3ae396b3585
children dc3260e1a915
files gtk/dw.c
diffstat 1 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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;
    }