diff --git a/ChangeLog b/ChangeLog index d4b375ccb4711742b9e3e3033a5abfbea565edfd..b014992b7ff43c1f234624dfe9d8415eae2b6db5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2006-12-18 Matthias Clasen + * glib/gkeyfile.c: Accept '@' in locale names. + * glib/gkeyfile.c: Tighten up the check for allowed key and group names. (#343191, Tommi Komulainen) diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c index a8bbb4a5b38c0ad2f07bd7d742a723dbc792844a..4e47b655714fc4543b2fa09f99e380af51a8e878 100644 --- a/glib/gkeyfile.c +++ b/glib/gkeyfile.c @@ -3240,7 +3240,7 @@ g_key_file_is_key_name (const gchar *name) if (*q == '[') { q++; - while (*q && (g_unichar_isalnum (g_utf8_get_char (q)) || *q == '-' || *q == '_' || *q == '.')) + while (*q && (g_unichar_isalnum (g_utf8_get_char (q)) || *q == '-' || *q == '_' || *q == '.' || *q == '@')) q = g_utf8_next_char (q); if (*q != ']') diff --git a/tests/keyfile-test.c b/tests/keyfile-test.c index fa8109ae74d75b741b6be1c246263568c271cc9b..4ad908bdef6744327105159520167c57d6e53c8a 100644 --- a/tests/keyfile-test.c +++ b/tests/keyfile-test.c @@ -755,7 +755,8 @@ test_locale_string (void) "key1[de_DE]=v1-de_DE\n" "key1[de_DE.UTF8]=v1-de_DE.UTF8\n" "key1[fr]=v1-fr\n" - "key1[en] =v1-en\n"; + "key1[en] =v1-en\n" + "key1[sr@Latn]=v1-sr\n"; keyfile = load_data (data, G_KEY_FILE_KEEP_TRANSLATIONS); @@ -766,6 +767,7 @@ test_locale_string (void) check_locale_string_value (keyfile, "valid", "key1", "fr", "v1-fr"); check_locale_string_value (keyfile, "valid", "key1", "fr_FR", "v1-fr"); check_locale_string_value (keyfile, "valid", "key1", "en", "v1-en"); + check_locale_string_value (keyfile, "valid", "key1", "sr@Latn", "v1-sr"); g_key_file_free (keyfile);