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

Reply via email to