From c980ef4f9037180b4e7daa03c630c9c9640c843e Mon Sep 17 00:00:00 2001 From: Justin Kim Date: Tue, 30 Jan 2018 01:09:23 +0900 Subject: [PATCH] Object: Fix string leakages --- Source/Libs/GLibSharp/Object.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Source/Libs/GLibSharp/Object.cs b/Source/Libs/GLibSharp/Object.cs index 8f3306cab..cd67854bc 100644 --- a/Source/Libs/GLibSharp/Object.cs +++ b/Source/Libs/GLibSharp/Object.cs @@ -511,6 +511,7 @@ namespace GLib { { IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name); g_object_class_override_property (oclass, property_id, native_name); + GLib.Marshaller.Free (native_name); } [Obsolete ("Use OverrideProperty(oclass,property_id,name)")] @@ -527,7 +528,14 @@ namespace GLib { { IntPtr gobjectclass = Marshal.ReadIntPtr (o.Handle); IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name); - return g_object_class_find_property (gobjectclass, native_name); + try + { + return g_object_class_find_property (gobjectclass, native_name); + } + finally + { + GLib.Marshaller.Free (native_name); + } } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] delegate IntPtr d_g_object_interface_find_property(IntPtr klass, IntPtr name); @@ -537,7 +545,14 @@ namespace GLib { { IntPtr g_iface = type.GetDefaultInterfacePtr (); IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name); - return g_object_interface_find_property (g_iface, native_name); + try + { + return g_object_interface_find_property (g_iface, native_name); + } + finally + { + GLib.Marshaller.Free (native_name); + } } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] delegate void d_g_object_class_install_property(IntPtr klass, uint prop_id, IntPtr param_spec);