]> git.xonotic.org Git - xonotic/gmqcc.git/commitdiff
bail out when encountering an invalid array size in the ast as it's likely to cause...
authorWolfgang Bumiller <wry.git@bumiller.com>
Tue, 27 Aug 2013 08:09:31 +0000 (10:09 +0200)
committerWolfgang Bumiller <wry.git@bumiller.com>
Tue, 27 Aug 2013 08:09:31 +0000 (10:09 +0200)
ast.c

diff --git a/ast.c b/ast.c
index 32ab1a2781bb60dab72082721eed7ef0408c6019..1d13d8b31744ebd8c978dbae6c6cbf296c79a249 100644 (file)
--- a/ast.c
+++ b/ast.c
@@ -1396,8 +1396,10 @@ bool ast_global_codegen(ast_value *self, ir_builder *ir, bool isfield)
             }
 
             /* we are lame now - considering the way QC works we won't tolerate arrays > 1024 elements */
-            if (!array->expression.count || array->expression.count > OPTS_OPTION_U32(OPTION_MAX_ARRAY_SIZE))
+            if (!array->expression.count || array->expression.count > OPTS_OPTION_U32(OPTION_MAX_ARRAY_SIZE)) {
                 compile_error(ast_ctx(self), "Invalid array of size %lu", (unsigned long)array->expression.count);
+                return false;
+            }
 
             elemtype = array->expression.next;
             vtype = elemtype->vtype;
@@ -1463,8 +1465,10 @@ bool ast_global_codegen(ast_value *self, ir_builder *ir, bool isfield)
         }
 
         /* same as with field arrays */
-        if (!self->expression.count || self->expression.count > OPTS_OPTION_U32(OPTION_MAX_ARRAY_SIZE))
+        if (!self->expression.count || self->expression.count > OPTS_OPTION_U32(OPTION_MAX_ARRAY_SIZE)) {
             compile_error(ast_ctx(self), "Invalid array of size %lu", (unsigned long)self->expression.count);
+            return false;
+        }
 
         v = ir_builder_create_global(ir, self->name, vtype);
         if (!v) {
@@ -1603,6 +1607,7 @@ static bool ast_local_codegen(ast_value *self, ir_function *func, bool param)
         /* we are lame now - considering the way QC works we won't tolerate arrays > 1024 elements */
         if (!self->expression.count || self->expression.count > OPTS_OPTION_U32(OPTION_MAX_ARRAY_SIZE)) {
             compile_error(ast_ctx(self), "Invalid array of size %lu", (unsigned long)self->expression.count);
+            return false;
         }
 
         self->ir_values = (ir_value**)mem_a(sizeof(self->ir_values[0]) * self->expression.count);