From 82046ff26ec9ae93d6d0cb5132a1dfd9651b5c3f Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 29 Sep 2020 16:44:04 +0900 Subject: Revert "Add a new function `mrb_exc_protect()`." This reverts commit 8746a6fe4e7bda8a0fbc0eaece9314ec51a0c255. We already have `mrb_protect()`, `mrb_ensure()` and `mrb_rescue()` functions. If you need to handle exceptions from C functions, use those functions above. --- include/mruby.h | 3 --- src/error.c | 23 ----------------------- 2 files changed, 26 deletions(-) diff --git a/include/mruby.h b/include/mruby.h index 4bbffb189..52bcd58bf 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -1293,9 +1293,6 @@ MRB_API void mrb_print_backtrace(mrb_state *mrb); MRB_API void mrb_print_error(mrb_state *mrb); /* function for `raisef` formatting */ MRB_API mrb_value mrb_vformat(mrb_state *mrb, const char *format, va_list ap); -/* function to protect errors during execution */ -MRB_API mrb_value mrb_exc_protect(mrb_state *mrb, mrb_value (*body)(mrb_state*, void*), void *a, mrb_value (*resc)(mrb_state*, void*, mrb_value), void *b); - /* macros to get typical exception objects note: diff --git a/src/error.c b/src/error.c index c077c8663..b19f0ea43 100644 --- a/src/error.c +++ b/src/error.c @@ -555,29 +555,6 @@ mrb_argnum_error(mrb_state *mrb, mrb_int argc, int min, int max) #undef FMT } -MRB_API mrb_value -mrb_exc_protect(mrb_state *mrb, mrb_value (*body)(mrb_state*, void*), void *a, - mrb_value (*resc)(mrb_state*, void*, mrb_value), void *b) -{ - struct mrb_jmpbuf *prev_jmp = mrb->jmp; - struct mrb_jmpbuf c_jmp; - mrb_value v = mrb_undef_value(); - - MRB_TRY(&c_jmp) { - mrb->jmp = &c_jmp; - v = body(mrb, a); - } MRB_CATCH(&c_jmp) { - if (mrb->exc) { - v = resc(mrb, b, mrb_obj_value(mrb->exc)); - mrb->exc = NULL; - } - } MRB_END_EXC(&c_jmp); - - mrb->jmp = prev_jmp; - - return v; -} - void mrb_core_init_printabort(void); int -- cgit v1.2.3