From: Wolfgang (Blub) Bumiller Date: Sun, 25 Nov 2012 16:43:13 +0000 (+0100) Subject: Fix parsing of multi-dot field types X-Git-Tag: 0.1.9~263 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=e22af3280570c07a9c499eee768a5b920f24368e;p=xonotic%2Fgmqcc.git Fix parsing of multi-dot field types --- diff --git a/parser.c b/parser.c index 650de16..5e72760 100644 --- a/parser.c +++ b/parser.c @@ -3210,6 +3210,18 @@ static ast_value *parse_typename(parser_t *parser, ast_value **storebase, ast_va parseerror(parser, "expected typename for field definition"); return NULL; } + + /* Further dots are handled seperately because they won't be part of the + * basetype + */ + while (parser->tok == '.') { + ++morefields; + if (!parser_next(parser)) { + parseerror(parser, "expected typename for field definition"); + return NULL; + } + } + if (parser->tok == TOKEN_IDENT) cached_typedef = parser_find_typedef(parser, parser_tokval(parser), 0); if (!cached_typedef && parser->tok != TOKEN_TYPENAME) { @@ -3218,17 +3230,6 @@ static ast_value *parse_typename(parser_t *parser, ast_value **storebase, ast_va } } - /* Further dots are handled seperately because they won't be part of the - * basetype - */ - while (parser->tok == '.') { - ++morefields; - if (!parser_next(parser)) { - parseerror(parser, "expected typename for field definition"); - return NULL; - } - } - /* generate the basic type value */ if (cached_typedef) { var = ast_value_copy(cached_typedef);