From fdea7924fea14607c8e80b3b5d061d24bc2b1658 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 8 Dec 2023 09:25:46 +0900 Subject: [PATCH] mruby-fiber (fiber_to_s): do not rely on mrb_any_to_s(); ref #6105 --- mrbgems/mruby-fiber/src/fiber.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/mrbgems/mruby-fiber/src/fiber.c b/mrbgems/mruby-fiber/src/fiber.c index 6875035b0..4b52097ab 100644 --- a/mrbgems/mruby-fiber/src/fiber.c +++ b/mrbgems/mruby-fiber/src/fiber.c @@ -367,9 +367,17 @@ fiber_to_s(mrb_state *mrb, mrb_value self) fiber_check(mrb, self); const struct RFiber *f = fiber_ptr(self); - mrb_value s = mrb_any_to_s(mrb, self); - mrb_assert(RSTRING_END(s)[-1] == '>'); - RSTRING_END(s)[-1] = ' '; + mrb_value s = mrb_str_new_lit(mrb, "#<"); + mrb_value cname = mrb_class_path(mrb, mrb_class_real(mrb_class(mrb, self))); + if (mrb_nil_p(cname)) { + mrb_str_cat_lit(mrb, s, "Fiber:"); + } + else { + mrb_str_cat_str(mrb, s, cname); + mrb_str_cat_lit(mrb, s, ":"); + } + mrb_str_cat_str(mrb, s, mrb_ptr_to_str(mrb, mrb_ptr(self))); + mrb_str_cat_lit(mrb, s, " "); const char *file; int32_t line;