mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-14 00:06:24 +01:00
GVariant: Stop lexing format strings at :
Lets us parse this successfully: {%s: %s}.
This commit is contained in:
parent
df67a0662b
commit
409a3a61ec
@ -167,11 +167,12 @@ token_stream_prepare (TokenStream *stream)
|
||||
break;
|
||||
|
||||
case '@': case '%':
|
||||
/* stop at the first space, comma or unmatched bracket.
|
||||
* deals nicely with cases like (%i, %i).
|
||||
/* stop at the first space, comma, colon or unmatched bracket.
|
||||
* deals nicely with cases like (%i, %i) or {%i: %i}.
|
||||
*/
|
||||
for (end = stream->stream + 1;
|
||||
end != stream->end && *end != ',' && !g_ascii_isspace (*end);
|
||||
end != stream->end && *end != ',' &&
|
||||
*end != ':' && !g_ascii_isspace (*end);
|
||||
end++)
|
||||
|
||||
if (*end == '(' || *end == '{')
|
||||
|
@ -3678,6 +3678,7 @@ test_parse_positional (void)
|
||||
" ('three', %u)]", "two", 3);
|
||||
g_assert (g_variant_is_of_type (value, G_VARIANT_TYPE ("a(su)")));
|
||||
check_and_free (value, "[('one', 1), ('two', 2), ('three', 3)]");
|
||||
check_and_free (g_variant_new_parsed ("{%s:%i}", "one", 1), "{'one': 1}");
|
||||
|
||||
if (do_failed_test ("*GVariant format string*"))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user