widget: Fix a memory leak with class actions
authorMatthias Clasen <mclasen@redhat.com>
Tue, 4 Feb 2020 23:24:14 +0000 (00:24 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 5 Feb 2020 11:28:39 +0000 (06:28 -0500)
This code was doing the wrong thing even if the parent class
doesn't have actions.

gtk/gtkwidget.c

index d93b4b13a5176d7b6a1995a3bc78bfa9756485d6..1ddee3026efd9333a48f49d0ead94baf9274b371 100644 (file)
@@ -12957,9 +12957,9 @@ gtk_widget_class_add_action (GtkWidgetClass  *widget_class,
 
   if (priv->actions == NULL)
     priv->actions = g_ptr_array_new ();
-  else if (GTK_IS_WIDGET_CLASS (&widget_class->parent_class))
+  else
     {
-      GtkWidgetClass *parent_class = GTK_WIDGET_CLASS (&widget_class->parent_class);
+      GtkWidgetClass *parent_class = GTK_WIDGET_CLASS (g_type_class_peek (g_type_parent (G_TYPE_FROM_CLASS (widget_class))));
       GtkWidgetClassPrivate *parent_priv = parent_class->priv;
       GPtrArray *parent_actions = parent_priv->actions;