remove excessive data conversion and don't leak string array
parent
78f18ad533
commit
c2a7ef6dde
|
@ -908,7 +908,8 @@ terminal_app_encoding_list_notify_cb (GSettings *settings,
|
||||||
{
|
{
|
||||||
TerminalApp *app = TERMINAL_APP (user_data);
|
TerminalApp *app = TERMINAL_APP (user_data);
|
||||||
GVariant *val;
|
GVariant *val;
|
||||||
GSList *strings, *tmp;
|
const gchar **strings;
|
||||||
|
int i;
|
||||||
TerminalEncoding *encoding;
|
TerminalEncoding *encoding;
|
||||||
const char *charset;
|
const char *charset;
|
||||||
|
|
||||||
|
@ -932,13 +933,15 @@ terminal_app_encoding_list_notify_cb (GSettings *settings,
|
||||||
val = g_settings_get_value (settings, key);
|
val = g_settings_get_value (settings, key);
|
||||||
if (val != NULL &&
|
if (val != NULL &&
|
||||||
g_variant_is_of_type (val, G_VARIANT_TYPE_STRING_ARRAY))
|
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
|
else
|
||||||
strings = NULL;
|
strings = NULL;
|
||||||
|
|
||||||
for (tmp = strings; tmp != NULL; tmp = tmp->next)
|
if (strings != NULL)
|
||||||
{
|
{
|
||||||
charset = tmp->data;
|
for (i = 0; strings[i] != NULL; ++i)
|
||||||
|
{
|
||||||
|
charset = strings[i];
|
||||||
if (!charset)
|
if (!charset)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -949,9 +952,13 @@ terminal_app_encoding_list_notify_cb (GSettings *settings,
|
||||||
encoding->is_active = TRUE;
|
encoding->is_active = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_free (strings);
|
||||||
|
}
|
||||||
|
|
||||||
g_signal_emit (app, signals[ENCODING_LIST_CHANGED], 0);
|
g_signal_emit (app, signals[ENCODING_LIST_CHANGED], 0);
|
||||||
|
|
||||||
|
if (val != NULL)
|
||||||
g_variant_unref (val);
|
g_variant_unref (val);
|
||||||
g_slist_free_full (strings, g_free);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue