--- gnome-panel-2.18.0/gnome-panel/panel-run-dialog.c.fix-invalid-read 2007-04-04 15:35:14.000000000 -0400
+++ gnome-panel-2.18.0/gnome-panel/panel-run-dialog.c 2007-04-04 15:40:24.000000000 -0400
@@ -111,6 +111,8 @@
static PanelRunDialog *static_dialog = NULL;
+static void panel_run_dialog_disconnect_pixmap (PanelRunDialog *dialog);
+
static void
panel_run_dialog_destroy (PanelRunDialog *dialog)
{
@@ -165,6 +167,8 @@
if (dialog->completion)
g_completion_free (dialog->completion);
dialog->completion = NULL;
+
+ panel_run_dialog_disconnect_pixmap (dialog);
g_free (dialog);
}
@@ -1905,6 +1909,17 @@
}
static void
+panel_run_dialog_disconnect_pixmap (PanelRunDialog *dialog)
+{
+ g_signal_handlers_disconnect_by_func (dialog->pixmap,
+ G_CALLBACK (panel_run_dialog_style_set),
+ dialog);
+ g_signal_handlers_disconnect_by_func (dialog->pixmap,
+ G_CALLBACK (panel_run_dialog_screen_changed),
+ dialog);
+}
+
+static void
panel_run_dialog_static_dialog_destroyed (PanelRunDialog *dialog)
{
/* just reset the static dialog to NULL for next time */