From: Dale Weiler Date: Sun, 27 Jan 2013 21:27:50 +0000 (+0000) Subject: Better handling of __VA_ARGS__ subscripting. X-Git-Tag: before-library~203 X-Git-Url: https://git.xonotic.org/?a=commitdiff_plain;h=1597f38f4579e8eb9f3a88d12559649d7119babc;p=xonotic%2Fgmqcc.git Better handling of __VA_ARGS__ subscripting. --- diff --git a/ftepp.c b/ftepp.c index b695edc..0fb7681 100644 --- a/ftepp.c +++ b/ftepp.c @@ -408,13 +408,18 @@ static bool ftepp_define_body(ftepp_t *ftepp, ppmacro *macro) { pptoken *ptok; while (ftepp->token != TOKEN_EOL && ftepp->token < TOKEN_EOF) { - size_t index; + bool subscript = false; + size_t index = 0; if (macro->variadic && !strcmp(ftepp_tokval(ftepp), "__VA_ARGS__")) { /* remember the token */ - if (ftepp_next(ftepp) == '#' && - ftepp_next(ftepp) == '#' && - ftepp_next(ftepp) == '[') - { + if (ftepp_next(ftepp) == '#') { + subscript = true; + } + + if (subscript && ftepp_next(ftepp) != '#') { + ftepp_error(ftepp, "expected `##` in __VA_ARGS__ for subscripting"); + return false; + } else if (subscript && ftepp_next(ftepp) == '[') { if (ftepp_next(ftepp) != TOKEN_INTCONST) { ftepp_error(ftepp, "expected index for __VA_ARGS__ subscript"); return false;