[pygobject/interface_override] interface: Fix leak when overriding GInterfaceInfo




commit 8c7cfc8faa0972a47386f11859f5d002a672e643
Author: Thibault Saunier <tsaunier igalia com>
Date:   Tue Mar 29 18:38:00 2022 +0200

    interface: Fix leak when overriding GInterfaceInfo
    
    When the interface is being registered by PyGObject and again through
    an override, the first one is being leaks, free it at this point.

 gi/pyginterface.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/gi/pyginterface.c b/gi/pyginterface.c
index 34db8fac..eafaacb8 100644
--- a/gi/pyginterface.c
+++ b/gi/pyginterface.c
@@ -85,14 +85,20 @@ pyg_register_interface(PyObject *dict, const gchar *class_name,
     }
 
     g_type_set_qdata(gtype, pyginterface_type_key, type);
-    
+
     PyDict_SetItemString(dict, (char *)class_name, (PyObject *)type);
-    
+
 }
 
 void
 pyg_register_interface_info(GType gtype, const GInterfaceInfo *info)
 {
+    GInterfaceInfo *prev_info = pyg_lookup_interface_info (gtype);
+
+    if (prev_info) {
+        g_free (prev_info);
+    }
+
     g_type_set_qdata(gtype, pyginterface_info_key, (gpointer) info);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]