From 3839abb46383c44904617658b3eed01cd16caa16 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Thu, 29 Nov 2007 14:36:26 +0000 Subject: [PATCH] 2007-11-29 Mike Kestner * glib/Signal.cs: ignore GCHandles with null targets since their object has been collected. [Fixes #344250 again] svn path=/trunk/gtk-sharp/; revision=90428 --- ChangeLog | 5 +++++ glib/Signal.cs | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 06b7354f0..0e10ec49a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-11-29 Mike Kestner + + * glib/Signal.cs: ignore GCHandles with null targets since + their object has been collected. [Fixes #344250 again] + 2007-11-28 Mike Kestner * glib/Object.cs: take ref using method param to avoid diff --git a/glib/Signal.cs b/glib/Signal.cs index 62d333dcb..d36b29b95 100644 --- a/glib/Signal.cs +++ b/glib/Signal.cs @@ -140,12 +140,15 @@ namespace GLib { [CDeclCallback] delegate void voidObjectDelegate (IntPtr handle, IntPtr gch); - static void voidObjectCallback (IntPtr handle, IntPtr gch) + static void voidObjectCallback (IntPtr handle, IntPtr data) { try { - if (gch == IntPtr.Zero) + if (data == IntPtr.Zero) return; - Signal sig = ((GCHandle) gch).Target as Signal; + GCHandle gch = (GCHandle) data; + if (gch.Target == null) + return; + Signal sig = gch.Target as Signal; if (sig == null) { ExceptionManager.RaiseUnhandledException (new Exception ("Unknown signal class GC handle received."), false); return;