From 81f5f5b8d4d3e4c86be2fa626c2321ef6024aad2 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 7 May 2025 12:34:13 +0900 Subject: [PATCH] mruby-bin-debugger: should not use Exception#inspect to print errors Use mrb_exc_get_output() instead. --- mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c b/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c index 49c93e21c..a383f3aab 100644 --- a/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +++ b/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include "apiprint.h" @@ -70,12 +71,15 @@ mrb_debug_eval(mrb_state *mrb, mrb_debug_context *dbg, const char *expr, size_t v = mrb_funcall_argv(mrb, recv, MRB_SYM(instance_eval), 1, &ruby_code); } - - if (exc) { - *exc = mrb_obj_is_kind_of(mrb, v, E_EXCEPTION); + mrb_bool is_exc = mrb_obj_is_kind_of(mrb, v, E_EXCEPTION); + if (is_exc) { + s = mrb_exc_get_output(mrb, mrb_obj_ptr(v)); + } + else { + s = mrb_inspect(mrb, v); } - s = mrb_inspect(mrb, v); + if (exc) *exc = is_exc; /* enable code_fetch_hook */ mrb->code_fetch_hook = tmp;