2008-01-17 Mike Kestner <mkestner@novell.com>

* glib/Object.cs: remove ref from Objects hash prior to releasing it.

2008-01-17  Mike Kestner  <mkestner@novell.com>

	* glib/ToggleRef.cs: check for null reference in IsAlive.

svn path=/trunk/gtk-sharp/; revision=93204
This commit is contained in:
Mike Kestner 2008-01-17 21:10:25 +00:00
parent f53935b65d
commit 5ccb3ccd2f
3 changed files with 13 additions and 4 deletions

View File

@ -1,3 +1,11 @@
2008-01-17 Mike Kestner <mkestner@novell.com>
* glib/Object.cs: remove ref from Objects hash prior to releasing it.
2008-01-17 Mike Kestner <mkestner@novell.com>
* glib/ToggleRef.cs: check for null reference in IsAlive.
2008-01-17 Mike Kestner <mkestner@novell.com> 2008-01-17 Mike Kestner <mkestner@novell.com>
* generator/Property.cs: missing Parent null check needed for direct * generator/Property.cs: missing Parent null check needed for direct

View File

@ -79,15 +79,15 @@ namespace GLib {
return; return;
disposed = true; disposed = true;
ToggleRef toggle_ref = Objects [Handle] as ToggleRef;
Objects.Remove (Handle);
try { try {
ToggleRef toggle_ref = Objects [Handle] as ToggleRef;
if (toggle_ref != null) if (toggle_ref != null)
toggle_ref.Free (); toggle_ref.Free ();
} catch (Exception e) { } catch (Exception e) {
Console.WriteLine ("Exception while disposing a " + this + " in Gtk#"); Console.WriteLine ("Exception while disposing a " + this + " in Gtk#");
throw e; throw e;
} }
Objects.Remove (Handle);
handle = IntPtr.Zero; handle = IntPtr.Zero;
GC.SuppressFinalize (this); GC.SuppressFinalize (this);
} }
@ -296,9 +296,9 @@ namespace GLib {
if (handle != IntPtr.Zero) { if (handle != IntPtr.Zero) {
ToggleRef tref = Objects [handle] as ToggleRef; ToggleRef tref = Objects [handle] as ToggleRef;
Objects.Remove (handle);
if (tref != null) if (tref != null)
tref.Free (); tref.Free ();
Objects.Remove (handle);
} }
handle = value; handle = value;
if (value != IntPtr.Zero) if (value != IntPtr.Zero)

View File

@ -44,7 +44,8 @@ namespace GLib {
if (reference is WeakReference) { if (reference is WeakReference) {
WeakReference weak = reference as WeakReference; WeakReference weak = reference as WeakReference;
return weak.IsAlive; return weak.IsAlive;
} } else if (reference == null)
return false;
return true; return true;
} }
} }