From eedc95460c2ffa545d951fb22e75b560832f08eb Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 24 Feb 2026 09:02:11 +0900 Subject: [PATCH] mruby-bin-debugger: extract raise_debugger_exception() helper Both dbgcmd_run() and dbgcmd_quit() defined an exception class and raised it with identical code. Add a shared static inline helper in mrdb.h. Co-authored-by: Claude --- mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c | 4 +--- mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c | 4 +--- mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h | 8 ++++++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c index 4cf635b41..36fb0c1fa 100644 --- a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c +++ b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c @@ -501,9 +501,7 @@ dbgcmd_quit(mrb_state *mrb, mrdb_state *mrdb) } if (mrdb->dbg->xm == DBG_QUIT) { - struct RClass *exc; - exc = mrb_define_class(mrb, "DebuggerExit", E_EXCEPTION); - mrb_raise(mrb, exc, "Exit mrdb"); + raise_debugger_exception(mrb, "DebuggerExit", "Exit mrdb"); } return DBGST_PROMPT; } diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c index 1cd463eb0..dd914af77 100644 --- a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c +++ b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c @@ -17,10 +17,8 @@ dbgcmd_run(mrb_state *mrb, mrdb_state *mrdb) else { dbg->xm = DBG_QUIT; if (dbg->xphase == DBG_PHASE_RUNNING){ - struct RClass *exc; puts("Start it from the beginning"); - exc = mrb_define_class(mrb, "DebuggerRestart", E_EXCEPTION); - mrb_raise(mrb, exc, "Restart mrdb"); + raise_debugger_exception(mrb, "DebuggerRestart", "Restart mrdb"); } } diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h b/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h index 1d379f4c7..df7680aff 100644 --- a/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +++ b/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h @@ -7,6 +7,7 @@ #define MRDB_H #include +#include #include "mrdbconf.h" @@ -136,6 +137,13 @@ typedef struct mrdb_state { typedef dbgcmd_state (*debug_command_func)(mrb_state*, mrdb_state*); +static inline mrb_noreturn void +raise_debugger_exception(mrb_state *mrb, const char *name, const char *msg) +{ + struct RClass *exc = mrb_define_class(mrb, name, E_EXCEPTION); + mrb_raise(mrb, exc, msg); +} + /* cmdrun.c */ dbgcmd_state dbgcmd_run(mrb_state*, mrdb_state*); dbgcmd_state dbgcmd_continue(mrb_state*, mrdb_state*);