From 44a5809224e819bf8bcca4ae9a8c5ea5bf4cefd7 Mon Sep 17 00:00:00 2001 From: Jose Narvaez Date: Fri, 13 Jun 2014 10:09:28 +0100 Subject: Fixed possible division by zero in 'codegen.c' reported by 'clang-analyzer' --- src/codegen.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'src/codegen.c') diff --git a/src/codegen.c b/src/codegen.c index c7b8e2d74..e2a43e5fc 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -1106,21 +1106,23 @@ readint_mrb_int(codegen_scope *s, const char *p, int base, mrb_bool neg, mrb_boo codegen_error(s, "malformed readint input"); } - if (neg) { - if ((MRB_INT_MIN + n)/base > result) { - *overflow = TRUE; - return 0; + if(base > 0) { + if (neg) { + if ((MRB_INT_MIN + n)/base > result) { + *overflow = TRUE; + return 0; + } + result *= base; + result -= n; } - result *= base; - result -= n; - } - else { - if ((MRB_INT_MAX - n)/base < result) { - *overflow = TRUE; - return 0; + else { + if ((MRB_INT_MAX - n)/base < result) { + *overflow = TRUE; + return 0; + } + result *= base; + result += n; } - result *= base; - result += n; } p++; } -- cgit v1.2.3