From 64c9565516304fa3376890d654d41a1e162c99eb Mon Sep 17 00:00:00 2001 From: Alistair Buxton Date: Mon, 14 Oct 2013 00:41:45 +0100 Subject: [PATCH] Fix up the encoding menu creation. Don't add non-radio items to the radio item group. Don't leak list nodes by prepending twice to the same list. Fixes BUG #10395. --- terminal/terminal-encoding-action.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/terminal/terminal-encoding-action.c b/terminal/terminal-encoding-action.c index 83242e9..77c916c 100644 --- a/terminal/terminal-encoding-action.c +++ b/terminal/terminal-encoding-action.c @@ -253,7 +253,7 @@ terminal_encoding_action_menu_shown (GtkWidget *menu, /* action to reset to the default */ default_label = g_strdup_printf (_("Default (%s)"), default_charset); item = gtk_radio_menu_item_new_with_label (groups, default_label); - groups = g_slist_prepend (groups, item); + groups = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item)); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), found); g_signal_connect (G_OBJECT (item), "activate", @@ -267,7 +267,6 @@ terminal_encoding_action_menu_shown (GtkWidget *menu, /* category item */ item = gtk_menu_item_new_with_label (_(terminal_encodings_names[n])); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - groups = g_slist_prepend (groups, item); gtk_widget_show (item); submenu = gtk_menu_new (); @@ -281,7 +280,7 @@ terminal_encoding_action_menu_shown (GtkWidget *menu, break; item2 = gtk_radio_menu_item_new_with_label (groups, charset); - groups = g_slist_prepend (groups, item2); + groups = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item2)); gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item2); g_object_set_qdata (G_OBJECT (item2), encoding_action_quark, (gchar *) charset); gtk_widget_show (item2); @@ -304,7 +303,7 @@ terminal_encoding_action_menu_shown (GtkWidget *menu, { /* add an action with the unknown charset */ item2 = gtk_radio_menu_item_new_with_label (groups, action->current); - groups = g_slist_prepend (groups, item2); + groups = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item2)); g_object_set_qdata_full (G_OBJECT (item2), encoding_action_quark, g_strdup (action->current), g_free); gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item2); -- 1.8.3.2