From 1207e245eaf3fe32e3ee2089522b4afcdc881c18 Mon Sep 17 00:00:00 2001 From: Yukihiro Matz Matsumoto Date: Thu, 13 Dec 2012 00:50:02 +0900 Subject: class of TT_VOIDP should be Object --- src/class.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/class.c b/src/class.c index dcd0ae492..339920b6e 100644 --- a/src/class.c +++ b/src/class.c @@ -888,6 +888,7 @@ mrb_singleton_class(mrb_state *mrb, mrb_value v) case MRB_TT_TRUE: return mrb_obj_value(mrb->true_class); case MRB_TT_MAIN: + case MRB_TT_VOIDP: return mrb_obj_value(mrb->object_class); case MRB_TT_SYMBOL: case MRB_TT_FIXNUM: -- cgit v1.2.3 From 6dede4edf9c1748c959ad85c2320008ffeade159 Mon Sep 17 00:00:00 2001 From: skandhas Date: Thu, 13 Dec 2012 14:42:07 +0800 Subject: fix incorrect integer-overflow checkups in OP_SUB/OP_SUBI case. --- src/vm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/vm.c b/src/vm.c index 92861d48c..fc251d3cb 100644 --- a/src/vm.c +++ b/src/vm.c @@ -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; -- cgit v1.2.3