diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-03-29 17:26:42 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-03-29 17:26:42 +0900 |
| commit | 4d3a1198f82b225f925f11be7dc6cc4de310a8c1 (patch) | |
| tree | 118a0bfdb00a8e0bad051674500a6d9f564d6f6a | |
| parent | 76e4de74862b95030f782be692ff307d88ac1492 (diff) | |
| download | mruby-revert-5391-throw.tar.gz mruby-revert-5391-throw.zip | |
Revert "Fix `SIGSEGV` with mruby-method + mruby-catch"revert-5391-throw
| -rw-r--r-- | src/vm.c | 19 |
1 files changed, 1 insertions, 18 deletions
@@ -780,25 +780,8 @@ mrb_yield_with_class(mrb_state *mrb, mrb_value b, mrb_int argc, const mrb_value mrb->c->ci->stack[argc+1] = mrb_nil_value(); if (MRB_PROC_CFUNC_P(p)) { - struct mrb_jmpbuf *prev_jmp = mrb->jmp; - struct mrb_jmpbuf c_jmp; - int ai = mrb_gc_arena_save(mrb); - mrb_bool exc = FALSE; - - MRB_TRY(&c_jmp) { - mrb->jmp = &c_jmp; - ci->acc = CI_ACC_DIRECT; - val = MRB_PROC_CFUNC(p)(mrb, self); - } - MRB_CATCH(&c_jmp) { - exc = TRUE; - } - MRB_END_EXC(&c_jmp); - - mrb->jmp = prev_jmp; - mrb_gc_arena_restore(mrb, ai); + val = MRB_PROC_CFUNC(p)(mrb, self); cipop(mrb); - if (exc) MRB_THROW(mrb->jmp); } else { val = mrb_run(mrb, p, self); |
