diff --git a/ChangeLog b/ChangeLog index 3bf009dd5..c1994e030 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-01-17 Mike Kestner + + * glib/Object.cs: remove ref from Objects hash prior to releasing it. + +2008-01-17 Mike Kestner + + * glib/ToggleRef.cs: check for null reference in IsAlive. + 2008-01-17 Mike Kestner * generator/Property.cs: missing Parent null check needed for direct diff --git a/glib/Object.cs b/glib/Object.cs index 9a3063b00..147107656 100644 --- a/glib/Object.cs +++ b/glib/Object.cs @@ -79,15 +79,15 @@ namespace GLib { return; disposed = true; + ToggleRef toggle_ref = Objects [Handle] as ToggleRef; + Objects.Remove (Handle); try { - ToggleRef toggle_ref = Objects [Handle] as ToggleRef; if (toggle_ref != null) toggle_ref.Free (); } catch (Exception e) { Console.WriteLine ("Exception while disposing a " + this + " in Gtk#"); throw e; } - Objects.Remove (Handle); handle = IntPtr.Zero; GC.SuppressFinalize (this); } @@ -296,9 +296,9 @@ namespace GLib { if (handle != IntPtr.Zero) { ToggleRef tref = Objects [handle] as ToggleRef; + Objects.Remove (handle); if (tref != null) tref.Free (); - Objects.Remove (handle); } handle = value; if (value != IntPtr.Zero) diff --git a/glib/ToggleRef.cs b/glib/ToggleRef.cs index 1d4164d79..cee2d0d28 100644 --- a/glib/ToggleRef.cs +++ b/glib/ToggleRef.cs @@ -44,7 +44,8 @@ namespace GLib { if (reference is WeakReference) { WeakReference weak = reference as WeakReference; return weak.IsAlive; - } + } else if (reference == null) + return false; return true; } }