diff options
| author | skandhas <[email protected]> | 2012-12-13 14:42:07 +0800 |
|---|---|---|
| committer | skandhas <[email protected]> | 2012-12-13 14:42:07 +0800 |
| commit | 6dede4edf9c1748c959ad85c2320008ffeade159 (patch) | |
| tree | 93389d0fe522bba5d837762226e880767ba8bb4e /src/vm.c | |
| parent | 35abbd1486c49a35d6a3414fd647ae8f2fc7ebbe (diff) | |
| download | mruby-6dede4edf9c1748c959ad85c2320008ffeade159.tar.gz mruby-6dede4edf9c1748c959ad85c2320008ffeade159.zip | |
fix incorrect integer-overflow checkups in OP_SUB/OP_SUBI case.
Diffstat (limited to 'src/vm.c')
| -rw-r--r-- | src/vm.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -1390,7 +1390,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) x = mrb_fixnum(regs[a]); y = mrb_fixnum(regs[a+1]); z = x - y; - if (((x < 0) ^ (y < 0)) == 0 && (x < 0) != (z < 0)) { + if (((x < 0) ^ (y < 0)) != 0 && (x < 0) != (z < 0)) { /* integer overflow */ SET_FLT_VALUE(regs[a], (mrb_float)x - (mrb_float)y); break; @@ -1532,7 +1532,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) mrb_int y = GETARG_C(i); mrb_int z = x - y; - if (((x < 0) ^ (y < 0)) == 0 && (x < 0) != (z < 0)) { + if (((x < 0) ^ (y < 0)) != 0 && (x < 0) != (z < 0)) { /* integer overflow */ SET_FLT_VALUE(regs[a], (mrb_float)x - (mrb_float)y); break; |
