From 1c317cf79e8612c99d3ec587ebe5b021eeaf0f70 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sun, 24 Nov 2024 23:28:39 +0900 Subject: [PATCH] mruby-catch (throw_m): small refactoring --- mrbgems/mruby-catch/src/catch.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/mrbgems/mruby-catch/src/catch.c b/mrbgems/mruby-catch/src/catch.c index c1e59ae8e..297bfdaf5 100644 --- a/mrbgems/mruby-catch/src/catch.c +++ b/mrbgems/mruby-catch/src/catch.c @@ -43,7 +43,7 @@ static const struct RProc catch_proc = { { &catch_irep }, NULL, { NULL } }; -static uintptr_t +static size_t find_catcher(mrb_state *mrb, mrb_value tag) { const mrb_callinfo *ci = mrb->c->ci - 1; // skip oneself throw @@ -68,16 +68,14 @@ throw_m(mrb_state *mrb, mrb_value self) } uintptr_t ci_index = find_catcher(mrb, tag); - if (ci_index > 0) { - struct RBreak *b = MRB_OBJ_ALLOC(mrb, MRB_TT_BREAK, NULL); - mrb_break_value_set(b, obj); - b->ci_break_index = ci_index; /* Back to the caller directly */ - mrb_exc_raise(mrb, mrb_obj_value(b)); - } - else { + if (ci_idex == 0) { mrb_value argv[2] = {tag, obj}; mrb_exc_raise(mrb, mrb_obj_new(mrb, mrb_exc_get_id(mrb, MRB_ERROR_SYM(UncaughtThrowError)), 2, argv)); } + struct RBreak *b = MRB_OBJ_ALLOC(mrb, MRB_TT_BREAK, NULL); + mrb_break_value_set(b, obj); + b->ci_break_index = ci_index; /* Back to the caller directly */ + mrb_exc_raise(mrb, mrb_obj_value(b)); /* not reached */ return mrb_nil_value(); }