[gtk/wip/baedert/for-master: 22/22] applicationaccels: Fix shortcut memory leaks
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/baedert/for-master: 22/22] applicationaccels: Fix shortcut memory leaks
- Date: Sat, 28 Mar 2020 07:54:25 +0000 (UTC)
commit d01e664c79ce0eb64939fda436064a324499d47e
Author: Timm Bäder <mail baedert org>
Date: Sat Mar 28 08:34:35 2020 +0100
applicationaccels: Fix shortcut memory leaks
g_list_model_get_item() is transfer-full.
gtk/gtkapplicationaccels.c | 36 ++++++++++++++++++++++++++++--------
1 file changed, 28 insertions(+), 8 deletions(-)
---
diff --git a/gtk/gtkapplicationaccels.c b/gtk/gtkapplicationaccels.c
index d6e21754fc..de4aafe378 100644
--- a/gtk/gtkapplicationaccels.c
+++ b/gtk/gtkapplicationaccels.c
@@ -96,11 +96,17 @@ gtk_application_accels_set_accels_for_action (GtkApplicationAccels *accels,
if (!GTK_IS_NAMED_ACTION (action) ||
!g_str_equal (gtk_named_action_get_action_name (GTK_NAMED_ACTION (action)), action_name))
- continue;
+ {
+ g_object_unref (shortcut_i);
+ continue;
+ }
if ((target == NULL && args != NULL) ||
(target != NULL && (args == NULL || !g_variant_equal (target, args))))
- continue;
+ {
+ g_object_unref (shortcut_i);
+ continue;
+ }
g_list_store_remove (G_LIST_STORE (accels->shortcuts), i);
break;
@@ -194,13 +200,20 @@ gtk_application_accels_get_accels_for_action (GtkApplicationAccels *accels,
if (!GTK_IS_NAMED_ACTION (action) ||
!g_str_equal (gtk_named_action_get_action_name (GTK_NAMED_ACTION (action)), action_name))
- continue;
+ {
+ g_object_unref (shortcut);
+ continue;
+ }
if ((target == NULL && args != NULL) ||
(target != NULL && (args == NULL || !g_variant_equal (target, args))))
- continue;
+ {
+ g_object_unref (shortcut);
+ continue;
+ }
append_accelerators (result, gtk_shortcut_get_trigger (shortcut));
+ g_object_unref (shortcut);
break;
}
@@ -263,18 +276,23 @@ gtk_application_accels_get_actions_for_accel (GtkApplicationAccels *accels,
}
result = g_ptr_array_new ();
-
+
for (i = 0; i < g_list_model_get_n_items (accels->shortcuts); i++)
{
GtkShortcut *shortcut = g_list_model_get_item (accels->shortcuts, i);
char *detailed_name;
if (!trigger_matches_accel (gtk_shortcut_get_trigger (shortcut), key, modifiers))
- continue;
-
+ {
+ g_object_unref (shortcut);
+ continue;
+ }
+
detailed_name = get_detailed_name_for_shortcut (shortcut);
if (detailed_name)
g_ptr_array_add (result, detailed_name);
+
+ g_object_unref (shortcut);
}
g_ptr_array_add (result, NULL);
@@ -288,7 +306,7 @@ gtk_application_accels_list_action_descriptions (GtkApplicationAccels *accels)
guint i;
result = g_ptr_array_new ();
-
+
for (i = 0; i < g_list_model_get_n_items (accels->shortcuts); i++)
{
GtkShortcut *shortcut = g_list_model_get_item (accels->shortcuts, i);
@@ -297,6 +315,8 @@ gtk_application_accels_list_action_descriptions (GtkApplicationAccels *accels)
detailed_name = get_detailed_name_for_shortcut (shortcut);
if (detailed_name)
g_ptr_array_add (result, detailed_name);
+
+ g_object_unref (shortcut);
}
g_ptr_array_add (result, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]