GVariant parser: tweak lexer for format strings
authorRyan Lortie <desrt@desrt.ca>
Wed, 17 Apr 2013 16:12:20 +0000 (12:12 -0400)
committerRyan Lortie <desrt@desrt.ca>
Fri, 19 Apr 2013 15:40:04 +0000 (11:40 -0400)
Tweak the lexer so that '[%s]' gets parsed as three separate tokens,
instead of the closing bracket getting sucked into the format string.

glib/gvariant-parser.c

index 1421a34..c60bd77 100644 (file)
@@ -223,10 +223,11 @@ token_stream_prepare (TokenStream *stream)
     case '@': case '%':
       /* stop at the first space, comma, colon or unmatched bracket.
        * deals nicely with cases like (%i, %i) or {%i: %i}.
+       * Also: ] and > are never in format strings.
        */
       for (end = stream->stream + 1;
            end != stream->end && *end != ',' &&
-           *end != ':' && *end != '>' && !g_ascii_isspace (*end);
+           *end != ':' && *end != '>' && *end != ']' && !g_ascii_isspace (*end);
            end++)
 
         if (*end == '(' || *end == '{')