diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-12-12 23:52:48 -0800 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-12-12 23:52:48 -0800 |
| commit | c81a97df9447fe2fff1925f865b06b45bafb8eeb (patch) | |
| tree | 93389d0fe522bba5d837762226e880767ba8bb4e /src/vm.c | |
| parent | 35abbd1486c49a35d6a3414fd647ae8f2fc7ebbe (diff) | |
| parent | 6dede4edf9c1748c959ad85c2320008ffeade159 (diff) | |
| download | mruby-c81a97df9447fe2fff1925f865b06b45bafb8eeb.tar.gz mruby-c81a97df9447fe2fff1925f865b06b45bafb8eeb.zip | |
Merge pull request #625 from skandhas/pr-fix-integer-overflow-checkups-in-OP_SUB-OP_SUBI
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; |
