aboutsummaryrefslogtreecommitdiff
path: root/src/checker/expr.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2016-09-12 14:41:36 +0100
committerGinger Bill <bill@gingerbill.org>2016-09-12 14:41:36 +0100
commit9ff4a8b5ab1edaa333180b8206a734787cdfb9f1 (patch)
tree3ae74f3ed02e4dc960d6f94eb1ed1f140516f74a /src/checker/expr.cpp
parent687e78d5ddf2d75022eedc060b3352643ebe2080 (diff)
Switchable array bounds checking
Diffstat (limited to 'src/checker/expr.cpp')
-rw-r--r--src/checker/expr.cpp21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/checker/expr.cpp b/src/checker/expr.cpp
index a15322ceb..86c864e0e 100644
--- a/src/checker/expr.cpp
+++ b/src/checker/expr.cpp
@@ -1926,19 +1926,18 @@ b32 check_index_value(Checker *c, AstNode *index_value, i64 max_count, i64 *valu
}
if (operand.mode == Addressing_Constant) {
- if (max_count >= 0) { // NOTE(bill): Do array bound checking
- i64 i = exact_value_to_integer(operand.value).value_integer;
- if (i < 0) {
- gbString expr_str = expr_to_string(operand.expr);
- error(&c->error_collector, ast_node_token(operand.expr),
- "Index `%s` cannot be a negative value", expr_str);
- gb_string_free(expr_str);
- if (value) *value = 0;
- return false;
- }
+ i64 i = exact_value_to_integer(operand.value).value_integer;
+ if (i < 0) {
+ gbString expr_str = expr_to_string(operand.expr);
+ error(&c->error_collector, ast_node_token(operand.expr),
+ "Index `%s` cannot be a negative value", expr_str);
+ gb_string_free(expr_str);
+ if (value) *value = 0;
+ return false;
+ }
+ if (max_count >= 0) { // NOTE(bill): Do array bound checking
if (value) *value = i;
-
if (i >= max_count) {
gbString expr_str = expr_to_string(operand.expr);
error(&c->error_collector, ast_node_token(operand.expr),