summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-05-25 11:11:40 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-05-25 11:11:40 +0900
commitff46957ef072832a3445c39c73b4a8eadceb5ce3 (patch)
treeaed81977f615cd1f5eb841668d672cbdd3636e8f
parent3ef97e3dd9fdd31ecca30d04d0fc3783ca8dab58 (diff)
downloadmruby-ff46957ef072832a3445c39c73b4a8eadceb5ce3.tar.gz
mruby-ff46957ef072832a3445c39c73b4a8eadceb5ce3.zip
Avoid using `mrb_raise()` in `mrb_vm_exec()`; ref #3660
-rw-r--r--src/vm.c10
1 files changed, 8 insertions, 2 deletions
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));