summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-09-20 17:32:38 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-09-20 17:32:38 +0900
commitc29822f80ccb002a7b3e07fd46c0fa9a260cd4f4 (patch)
treecc6d789ea560d64c180f1900cf8616d0c3c381f1 /mrbgems
parent0455313a9bdbe93556a8fd31b7c011dd004a6f2b (diff)
downloadmruby-c29822f80ccb002a7b3e07fd46c0fa9a260cd4f4.tar.gz
mruby-c29822f80ccb002a7b3e07fd46c0fa9a260cd4f4.zip
codegen.c (gen_addsub): use `mrb_int_sub_overflow()`.
Diffstat (limited to 'mrbgems')
-rw-r--r--mrbgems/mruby-compiler/core/codegen.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c
index ac611f422..2d06c703a 100644
--- a/mrbgems/mruby-compiler/core/codegen.c
+++ b/mrbgems/mruby-compiler/core/codegen.c
@@ -784,11 +784,12 @@ gen_addsub(codegen_scope *s, uint8_t op, uint16_t dst)
}
return;
}
- if (op == OP_SUB) {
- if (n == MRB_INT_MIN) goto normal;
- n = -n;
+ if (op == OP_ADD) {
+ if (mrb_int_add_overflow(n0, n, &n)) goto normal;
+ }
+ else { /* OP_SUB */
+ if (mrb_int_sub_overflow(n0, n, &n)) goto normal;
}
- if (mrb_int_add_overflow(n0, n, &n)) goto normal;
s->pc = addr_pc(s, data0.addr);
gen_int(s, dst, n);
}