From c2a7ef6dde4d9fc4d875988dd782acb5d0b41924 Mon Sep 17 00:00:00 2001 From: monsta Date: Wed, 2 Dec 2015 13:56:44 +0300 Subject: remove excessive data conversion and don't leak string array --- src/terminal-app.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/terminal-app.c b/src/terminal-app.c index ab067d3..e3e23d0 100644 --- a/src/terminal-app.c +++ b/src/terminal-app.c @@ -908,7 +908,8 @@ terminal_app_encoding_list_notify_cb (GSettings *settings, { TerminalApp *app = TERMINAL_APP (user_data); GVariant *val; - GSList *strings, *tmp; + const gchar **strings; + int i; TerminalEncoding *encoding; const char *charset; @@ -932,26 +933,32 @@ terminal_app_encoding_list_notify_cb (GSettings *settings, val = g_settings_get_value (settings, key); if (val != NULL && g_variant_is_of_type (val, G_VARIANT_TYPE_STRING_ARRAY)) - strings = mate_gsettings_strv_to_gslist (g_variant_get_strv (val, NULL)); + strings = g_variant_get_strv (val, NULL); else strings = NULL; - for (tmp = strings; tmp != NULL; tmp = tmp->next) + if (strings != NULL) { - charset = tmp->data; - if (!charset) - continue; + for (i = 0; strings[i] != NULL; ++i) + { + charset = strings[i]; + if (!charset) + continue; - encoding = terminal_app_ensure_encoding (app, charset); - if (!terminal_encoding_is_valid (encoding)) - continue; + encoding = terminal_app_ensure_encoding (app, charset); + if (!terminal_encoding_is_valid (encoding)) + continue; - encoding->is_active = TRUE; + encoding->is_active = TRUE; + } + + g_free (strings); } g_signal_emit (app, signals[ENCODING_LIST_CHANGED], 0); - g_variant_unref (val); - g_slist_free_full (strings, g_free); + + if (val != NULL) + g_variant_unref (val); } static void -- cgit v1.2.1