From 8004168725dc7e3c6975400c40fc9419a0ffed65 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Wed, 13 Jun 2012 19:16:24 +0900 Subject: readint() returns long --- src/codegen.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/codegen.c b/src/codegen.c index 4c0f98295..5f8d17314 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -12,6 +12,7 @@ #include "mruby/irep.h" #include "mruby/proc.h" #include "mruby/compile.h" +#include "mruby/numeric.h" #include "opcode.h" #include "node.h" #include @@ -1574,10 +1575,10 @@ codegen(codegen_scope *s, node *tree, int val) if (val) { char *p = (char*)tree->car; int base = (intptr_t)tree->cdr->car; - int i = readint(p, base); + long i = readint(p, base); mrb_code co; - if (i == LONG_MAX && errno == ERANGE) { + if ((i == LONG_MAX && errno == ERANGE) || !FIXABLE(i)) { mrb_float f = readint_float(s, p, base); int off = new_lit(s, mrb_float_value(f)); @@ -1628,10 +1629,10 @@ codegen(codegen_scope *s, node *tree, int val) { char *p = (char*)tree->car; int base = (intptr_t)tree->cdr->car; - int i = readint(p, base); + long i = readint(p, base); mrb_code co; - if (i == LONG_MAX && errno == ERANGE) { + if ((i == LONG_MAX && errno == ERANGE) || !FIXABLE(i)) { mrb_float f = readint_float(s, p, base); int off = new_lit(s, mrb_float_value(-f)); -- cgit v1.2.3