diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-06-13 19:16:24 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-06-13 19:16:24 +0900 |
| commit | 8004168725dc7e3c6975400c40fc9419a0ffed65 (patch) | |
| tree | 03713e0ed41d28737a9baf5560fc44b23c998f87 /src/codegen.c | |
| parent | 8e574a9e7433cb6f5b17a8cac8e66a54fc71a03f (diff) | |
| download | mruby-8004168725dc7e3c6975400c40fc9419a0ffed65.tar.gz mruby-8004168725dc7e3c6975400c40fc9419a0ffed65.zip | |
readint() returns long
Diffstat (limited to 'src/codegen.c')
| -rw-r--r-- | src/codegen.c | 9 |
1 files changed, 5 insertions, 4 deletions
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 <string.h> @@ -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)); |
