Blame SOURCES/pygobject-3.8.2-gvalue-memory-leak.patch

cb0639
diff -up pygobject-3.8.2/gi/pygi-marshal-cleanup.c.gvalue-memory-leak pygobject-3.8.2/gi/pygi-marshal-cleanup.c
cb0639
--- pygobject-3.8.2/gi/pygi-marshal-cleanup.c.gvalue-memory-leak	2013-03-04 04:19:22.000000000 -0500
cb0639
+++ pygobject-3.8.2/gi/pygi-marshal-cleanup.c	2014-09-26 09:04:12.780688672 -0400
cb0639
@@ -29,16 +29,17 @@ _cleanup_caller_allocates (PyGIInvokeSta
cb0639
 {
cb0639
     PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)cache;
cb0639
 
cb0639
-    if (g_type_is_a (iface_cache->g_type, G_TYPE_BOXED)) {
cb0639
+    /* check GValue first because GValue is also a boxed sub-type */
cb0639
+    if (g_type_is_a (iface_cache->g_type, G_TYPE_VALUE)) {
cb0639
+        if (was_processed)
cb0639
+            g_value_unset (data);
cb0639
+        g_slice_free (GValue, data);
cb0639
+    } else if (g_type_is_a (iface_cache->g_type, G_TYPE_BOXED)) {
cb0639
         gsize size;
cb0639
         if (was_processed)
cb0639
             return; /* will be cleaned up at deallocation */
cb0639
         size = g_struct_info_get_size (iface_cache->interface_info);
cb0639
         g_slice_free1 (size, data);
cb0639
-    } else if (iface_cache->g_type == G_TYPE_VALUE) {
cb0639
-        if (was_processed)
cb0639
-            g_value_unset (data);
cb0639
-        g_slice_free (GValue, data);
cb0639
     } else if (iface_cache->is_foreign) {
cb0639
         if (was_processed)
cb0639
             return; /* will be cleaned up at deallocation */