From 1c2f37434b2f195e8b5b8b977758bc53919b96f5 Mon Sep 17 00:00:00 2001 From: Kazuki Tsujimoto Date: Fri, 4 May 2012 18:18:54 +0900 Subject: LocalJumpError message contained garbage characters --- src/vm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vm.c b/src/vm.c index 9915200de..f7e83c79a 100644 --- a/src/vm.c +++ b/src/vm.c @@ -268,7 +268,7 @@ localjump_error(mrb_state *mrb, const char *kind) mrb_value exc; snprintf(buf, 256, "unexpected %s", kind); - exc = mrb_exc_new(mrb, E_LOCALJUMP_ERROR, buf, sizeof(buf)); + exc = mrb_exc_new(mrb, E_LOCALJUMP_ERROR, buf, strlen(buf)); mrb->exc = mrb_object(exc); } -- cgit v1.2.3 From 7e1df10517f7d9163b0e20c17961b82754de2907 Mon Sep 17 00:00:00 2001 From: Kazuki Tsujimoto Date: Fri, 4 May 2012 18:34:13 +0900 Subject: Fix SEGV when returning from terminated method --- src/vm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vm.c b/src/vm.c index 9915200de..543b56c19 100644 --- a/src/vm.c +++ b/src/vm.c @@ -992,6 +992,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) case OP_R_RETURN: if (proc->env->cioff < 0) { localjump_error(mrb, "return"); + goto L_RAISE; } ci = mrb->ci = mrb->cibase + proc->env->cioff; break; -- cgit v1.2.3 From 6545fe241bccb1232f45c0af192f40750bc2cc4f Mon Sep 17 00:00:00 2001 From: Kazuki Tsujimoto Date: Fri, 4 May 2012 19:57:02 +0900 Subject: Fix SEGV when including an object other than Module --- src/class.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/class.c b/src/class.c index 366bde96d..f517cc19a 100644 --- a/src/class.c +++ b/src/class.c @@ -502,6 +502,7 @@ mrb_mod_include(mrb_state *mrb, mrb_value klass) mrb_value mod; mrb_get_args(mrb, "o", &mod); + mrb_check_type(mrb, mod, MRB_TT_MODULE); mrb_include_module(mrb, mrb_class_ptr(klass), mrb_class_ptr(mod)); return mod; } -- cgit v1.2.3