From f5bc82f26784484ccbe29e50d088acb8e4a1e12b Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 25 Nov 2023 23:19:44 +0900 Subject: [PATCH] mruby-method (method_to_s): avoid origin class like `Object(Object)` --- mrbgems/mruby-method/src/method.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mrbgems/mruby-method/src/method.c b/mrbgems/mruby-method/src/method.c index b0869fb35..f16ab850d 100644 --- a/mrbgems/mruby-method/src/method.c +++ b/mrbgems/mruby-method/src/method.c @@ -380,7 +380,6 @@ method_to_s(mrb_state *mrb, mrb_value self) mrb_value klass = mrb_iv_get(mrb, self, MRB_SYM(_klass)); mrb_value name = mrb_iv_get(mrb, self, MRB_SYM(_name)); mrb_value str = mrb_str_new_lit(mrb, "#<"); - struct RClass *rklass; mrb_str_cat_cstr(mrb, str, mrb_obj_classname(mrb, self)); mrb_str_cat_lit(mrb, str, ": "); @@ -394,14 +393,15 @@ method_to_s(mrb_state *mrb, mrb_value self) } } - rklass = mrb_class_ptr(klass); - if (mrb_class_ptr(owner) == rklass) { + struct RClass *ok = mrb_class_ptr(owner); + struct RClass *rk = mrb_class_ptr(klass); + struct RClass *rklass = mrb_class_real(rk); /* skip internal class */ + if (ok == rk || ok == rklass) { mrb_str_concat(mrb, str, owner); mrb_str_cat_lit(mrb, str, "#"); mrb_str_concat(mrb, str, name); } else { - rklass = mrb_class_real(rklass); /* skip internal class */ mrb_str_concat(mrb, str, mrb_obj_value(rklass)); mrb_str_cat_lit(mrb, str, "("); mrb_str_concat(mrb, str, owner);