Don't leak all AT contexts
authorMatthias Clasen <mclasen@redhat.com>
Thu, 23 Mar 2023 03:41:40 +0000 (23:41 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 23 Mar 2023 12:19:45 +0000 (08:19 -0400)
create_at_context was confused - it stored a reference
to the newly created context in priv->context, but then
also returned a reference, and the caller stored that
in priv->context again.

Change it to only return a reference.

Fixes: #5690
(cherry picked from commit 7b22983be58b7f96afa85399f0f7b86b0a4b8e09)

gtk/gtkwidget.c

index 974e12617222fa8b02abfcc18e8243d2bfb30bdd..b933ac513d72b75a6a800072101634cc206404ca 100644 (file)
@@ -8499,11 +8499,7 @@ create_at_context (GtkWidget *self)
     role = class_priv->accessible_role;
 
   priv->accessible_role = role;
-  priv->at_context = gtk_at_context_create (role, GTK_ACCESSIBLE (self), gdk_display_get_default ());
-  if (priv->at_context != NULL)
-    return g_object_ref (priv->at_context);
-
-  return NULL;
+  return gtk_at_context_create (role, GTK_ACCESSIBLE (self), gdk_display_get_default ());
 }
 
 static GtkATContext *