]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - parser.c
Copying arg counter into the local
[xonotic/gmqcc.git] / parser.c
index 84c3e0907673fe5c9848bf5f5e1334713efb5a06..32e9427bc49be1bb6c14e261fa8fe30a7ca6cc74 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -3998,12 +3998,6 @@ static bool parse_function_body(parser_t *parser, ast_value *var)
         }
     }
 
-    if (var->argcounter) {
-        ast_value *argc = ast_value_new(ast_ctx(var), var->argcounter, TYPE_FLOAT);
-        ast_block_collect(block, (ast_expression*)argc);
-        parser_addlocal(parser, argc->name, (ast_expression*)argc);
-    }
-
     func = ast_function_new(ast_ctx(var), var->name, var);
     if (!func) {
         parseerror(parser, "failed to allocate function for `%s`", var->name);
@@ -4012,6 +4006,12 @@ static bool parse_function_body(parser_t *parser, ast_value *var)
     }
     vec_push(parser->functions, func);
 
+    if (var->argcounter) {
+        ast_value *argc = ast_value_new(ast_ctx(var), var->argcounter, TYPE_FLOAT);
+        parser_addlocal(parser, argc->name, (ast_expression*)argc);
+        func->argc = argc;
+    }
+
     if (var->expression.flags & AST_FLAG_VARIADIC) {
         char name[1024];
         ast_value *varargs = ast_value_new(ast_ctx(var), "reserved:va_args", TYPE_ARRAY);