builder: Don't leak refs
authorMatthias Clasen <mclasen@redhat.com>
Mon, 27 Sep 2021 20:38:32 +0000 (16:38 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 31 Oct 2021 21:52:04 +0000 (17:52 -0400)
We sometimes end up setting an object on a GValue
that we are then not interested in. We need to
unset it, or we'll leak the ref.

gtk/gtkbuilder.c

index 9d85e6f2ed979dbeafecde3a5beb049478777a70..81d450925650e2c57193c8dfb2c01d0f3d8fe666 100644 (file)
@@ -617,16 +617,12 @@ gtk_builder_get_parameters (GtkBuilder         *builder,
           continue;
         }
 
-      if (prop->pspec->flags & filter_flags)
-        {
-          if (filtered_parameters)
-            object_properties_add (filtered_parameters, property_name, &property_value);
-        }
+      if ((prop->pspec->flags & filter_flags) != 0 && filtered_parameters)
+        object_properties_add (filtered_parameters, property_name, &property_value);
+      else if ((prop->pspec->flags & filter_flags) == 0 && parameters)
+        object_properties_add (parameters, property_name, &property_value);
       else
-        {
-          if (parameters)
-            object_properties_add (parameters, property_name, &property_value);
-        }
+        g_value_unset (&property_value);
     }
 }