From ff46957ef072832a3445c39c73b4a8eadceb5ce3 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 25 May 2017 11:11:40 +0900 Subject: Avoid using `mrb_raise()` in `mrb_vm_exec()`; ref #3660 --- src/vm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/vm.c b/src/vm.c index 354931f37..10c711a49 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1148,8 +1148,14 @@ RETRY_TRY_BLOCK: case MRB_TT_MODULE: break; default: - mrb_raise(mrb, E_TYPE_ERROR, "class or module required for rescue clause"); - break; + { + mrb_value exc; + + exc = mrb_exc_new_str_lit(mrb, E_TYPE_ERROR, + "class or module required for rescue clause"); + mrb_exc_set(mrb, exc); + goto L_RAISE; + } } ec = mrb_class_ptr(e); regs[b] = mrb_bool_value(mrb_obj_is_kind_of(mrb, exc, ec)); -- cgit v1.2.3