+2007-12-03 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/gkeyfile.c: Don't call g_get_language_names() per-key.
+ (#500638, Michael Meeks)
+
2007-12-03 Marco Barisione <marco@barisione.org>
* glib/gregex.c:
gchar list_separator;
GKeyFileFlags flags;
+
+ gchar **locales;
};
typedef struct _GKeyFileKeyValuePair GKeyFileKeyValuePair;
key_file->approximate_size = 0;
key_file->list_separator = ';';
key_file->flags = 0;
+ key_file->locales = g_strdupv ((gchar **)g_get_language_names ());
}
static void
{
GList *tmp, *group_node;
+ if (key_file->locales)
+ {
+ g_strfreev (key_file->locales);
+ key_file->locales = NULL;
+ }
+
if (key_file->parse_buffer)
- g_string_free (key_file->parse_buffer, TRUE);
+ {
+ g_string_free (key_file->parse_buffer, TRUE);
+ key_file->parse_buffer = NULL;
+ }
tmp = key_file->groups;
while (tmp != NULL)
g_key_file_locale_is_interesting (GKeyFile *key_file,
const gchar *locale)
{
- const gchar * const * current_locales;
gsize i;
if (key_file->flags & G_KEY_FILE_KEEP_TRANSLATIONS)
return TRUE;
- current_locales = g_get_language_names ();
-
- for (i = 0; current_locales[i] != NULL; i++)
+ for (i = 0; key_file->locales[i] != NULL; i++)
{
- if (g_ascii_strcasecmp (current_locales[i], locale) == 0)
+ if (g_ascii_strcasecmp (key_file->locales[i], locale) == 0)
return TRUE;
}
if (key_file->start_group == NULL)
key_file->start_group = group;
- g_hash_table_insert (key_file->group_hash, group->name, group);
+ g_hash_table_insert (key_file->group_hash, (gpointer)group->name, group);
}
static void