From 5dd6cef552f378d68642cabefa54597c32075c7f Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Fri, 14 Nov 2003 03:05:20 +0000 Subject: [PATCH] 2003-11-13 Mike Kestner * generator/SignalHandler.cs : guard against destroyed signalhandlers. svn path=/trunk/gtk-sharp/; revision=19982 --- ChangeLog | 4 ++++ generator/SignalHandler.cs | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9b4508b98..de373238c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-11-13 Mike Kestner + + * generator/SignalHandler.cs : guard against destroyed signalhandlers. + 2003-11-07 Mike Kestner * configure.in : add mono check. expand wrapper scripts diff --git a/generator/SignalHandler.cs b/generator/SignalHandler.cs index eba65239f..9dcd916f7 100644 --- a/generator/SignalHandler.cs +++ b/generator/SignalHandler.cs @@ -197,13 +197,17 @@ namespace GtkSharp.Generation { sw.WriteLine("\t\t[DllImport(\"libgobject-2.0-0.dll\")]"); sw.WriteLine("\t\tstatic extern void g_signal_handler_disconnect (IntPtr instance, uint handler);"); sw.WriteLine(); + sw.WriteLine("\t\t[DllImport(\"libgobject-2.0-0.dll\")]"); + sw.WriteLine("\t\tstatic extern bool g_signal_handler_is_connected (IntPtr instance, uint handler);"); + sw.WriteLine(); sw.WriteLine("\t\tprotected override void Dispose (bool disposing)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\t_Instances.Remove(_key);"); sw.WriteLine("\t\t\tif(_Instances.Count == 0)"); sw.WriteLine("\t\t\t\t_Delegate = null;"); sw.WriteLine(); - sw.WriteLine("\t\t\tg_signal_handler_disconnect (_raw, _HandlerID);"); + sw.WriteLine("\t\t\tif (g_signal_handler_is_connected (_raw, _HandlerID))"); + sw.WriteLine("\t\t\t\tg_signal_handler_disconnect (_raw, _HandlerID);"); sw.WriteLine("\t\t\tbase.Dispose (disposing);"); sw.WriteLine("\t\t}"); sw.WriteLine("\t}");