Author: mkestner
Date: 2007-06-18 13:05:15 -0400 (Mon, 18 Jun 2007)
New Revision: 80024
Modified:
branches/gtk-sharp-2-468-branch/gtk-sharp/ChangeLog
branches/gtk-sharp-2-468-branch/gtk-sharp/glib/ManagedValue.cs
branches/gtk-sharp-2-468-branch/gtk-sharp/glib/Value.cs
Log:
2007-06-05 Mike Kestner <[EMAIL PROTECTED]>
* glib/ManagedValue.cs (ReleaseWrapper): new method.
* glib/Value.cs : release the ManagedValue wrapper to avoid leaks.
[Fixes #81799]
Modified: branches/gtk-sharp-2-468-branch/gtk-sharp/ChangeLog
===================================================================
--- branches/gtk-sharp-2-468-branch/gtk-sharp/ChangeLog 2007-06-18 17:03:19 UTC
(rev 80023)
+++ branches/gtk-sharp-2-468-branch/gtk-sharp/ChangeLog 2007-06-18 17:05:15 UTC
(rev 80024)
@@ -1,3 +1,9 @@
+2007-06-05 Mike Kestner <[EMAIL PROTECTED]>
+
+ * glib/ManagedValue.cs (ReleaseWrapper): new method.
+ * glib/Value.cs : release the ManagedValue wrapper to avoid leaks.
+ [Fixes #81799]
+
2006-07-15 Mike Kestner <[EMAIL PROTECTED]>
* parser/gapi2xml.pl : regex fix needed for vfs 2.15.3 parse.
Modified: branches/gtk-sharp-2-468-branch/gtk-sharp/glib/ManagedValue.cs
===================================================================
--- branches/gtk-sharp-2-468-branch/gtk-sharp/glib/ManagedValue.cs
2007-06-18 17:03:19 UTC (rev 80023)
+++ branches/gtk-sharp-2-468-branch/gtk-sharp/glib/ManagedValue.cs
2007-06-18 17:05:15 UTC (rev 80024)
@@ -83,6 +83,14 @@
return null;
return ((GCHandle)ptr).Target;
}
+
+ public static void ReleaseWrapper (IntPtr ptr)
+ {
+ if (ptr == IntPtr.Zero)
+ return;
+
+ ((GCHandle)ptr).Free ();
+ }
}
}
Modified: branches/gtk-sharp-2-468-branch/gtk-sharp/glib/Value.cs
===================================================================
--- branches/gtk-sharp-2-468-branch/gtk-sharp/glib/Value.cs 2007-06-18
17:03:19 UTC (rev 80023)
+++ branches/gtk-sharp-2-468-branch/gtk-sharp/glib/Value.cs 2007-06-18
17:05:15 UTC (rev 80024)
@@ -365,9 +365,11 @@
IntPtr buf = Marshal.AllocHGlobal
(Marshal.SizeOf (value.GetType()));
Marshal.StructureToPtr (value, buf,
false);
g_value_set_pointer (ref this, buf);
- } else if (type == ManagedValue.GType.Val)
- g_value_set_boxed (ref this,
ManagedValue.WrapObject (value));
- else if (g_type_is_a (type, GType.Object.Val))
+ } else if (type == ManagedValue.GType.Val) {
+ IntPtr wrapper =
ManagedValue.WrapObject (value);
+ g_value_set_boxed (ref this, wrapper);
+ ManagedValue.ReleaseWrapper (wrapper);
+ } else if (g_type_is_a (type, GType.Object.Val))
g_value_set_object (ref this,
((GLib.Object) value).Handle);
else if (g_type_is_a (type, GType.Boxed.Val)) {
if (value is IWrapper) {
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches