X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=parser.cpp;h=7e552325d544caf5ebb5a955bbf933d80f8f0926;hb=3cf2c52fce792af3e5cc5578b336de83217e625d;hp=63e49d056969f4b3360f697050722c67241f34a9;hpb=b14a02e735f8b7bed773d397a35b6fda1e2a368d;p=xonotic%2Fgmqcc.git diff --git a/parser.cpp b/parser.cpp index 63e49d0..7e55232 100644 --- a/parser.cpp +++ b/parser.cpp @@ -135,17 +135,22 @@ static ast_expression* parser_find_local(parser_t *parser, const char *name, siz { size_t i, hash; ast_expression *e; + ast_expression *p; hash = util_hthash(parser->htglobals, name); *isparam = false; + p = parser_find_param(parser, name); + if (p) { + *isparam = true; + return p; + } for (i = parser->variables.size(); i > upto;) { --i; if ( (e = (ast_expression*)util_htgeth(parser->variables[i], name, hash)) ) return e; } - *isparam = true; - return parser_find_param(parser, name); + return NULL; } static ast_expression* parser_find_local(parser_t *parser, const std::string &name, size_t upto, bool *isparam) { @@ -3163,6 +3168,7 @@ static bool parse_switch_go(parser_t *parser, ast_block *block, ast_expression * } if (!OPTS_FLAG(RELAXED_SWITCH)) { if (!ast_istype(swcase.m_value, ast_value)) { /* || ((ast_value*)swcase.m_value)->m_cvq != CV_CONST) { */ + delete switchnode; parseerror(parser, "case on non-constant values need to be explicitly enabled via -frelaxed-switch"); ast_unref(operand); return false;