]> git.xonotic.org Git - xonotic/gmqcc.git/commitdiff
Keep track of blocklocal in parser_parse_block
authorWolfgang Bumiller <wolfgang.linux@bumiller.com>
Thu, 19 Jul 2012 18:30:36 +0000 (20:30 +0200)
committerWolfgang Bumiller <wolfgang.linux@bumiller.com>
Thu, 19 Jul 2012 18:30:36 +0000 (20:30 +0200)
parser.c

index 6fdb87dd8aae198e55e216540d2c867178008279..31f2939867a3c2b8c16fbe6cfd303eee03a3cf2d 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -173,11 +173,15 @@ bool parser_body_do(parser_t *parser, ast_block *block)
 
 ast_block* parser_parse_block(parser_t *parser)
 {
-    ast_block *block;
+    size_t oldblocklocal;
+    ast_block *block = NULL;
+
+    oldblocklocal = parser->blocklocal;
+    parser->blocklocal = parser->locals_count;
 
     if (!parser_next(parser)) { /* skip the '{' */
         parseerror(parser, "expected function body");
-        return NULL;
+        goto cleanup;
     }
 
     block = ast_block_new(parser_ctx(parser));
@@ -189,9 +193,13 @@ ast_block* parser_parse_block(parser_t *parser)
 
         if (!parser_body_do(parser, block)) {
             ast_block_delete(block);
-            return NULL;
+            block = NULL;
+            goto cleanup;
         }
     }
+
+cleanup:
+    parser->blocklocal = oldblocklocal;
     return block;
 }