From 7f1ae1c344029a8f57ca12859b520541f0fc97a9 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 1 Dec 2023 15:39:23 +0900 Subject: [PATCH] mruby-method (method_to_s): avoid goto across declarations for C++ --- mrbgems/mruby-method/src/method.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/mrbgems/mruby-method/src/method.c b/mrbgems/mruby-method/src/method.c index 77b29374f..6d1b2decc 100644 --- a/mrbgems/mruby-method/src/method.c +++ b/mrbgems/mruby-method/src/method.c @@ -393,21 +393,22 @@ method_to_s(mrb_state *mrb, mrb_value self) goto finish; } } - - 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 { - mrb_str_concat(mrb, str, mrb_obj_value(rklass)); - mrb_str_cat_lit(mrb, str, "("); - mrb_str_concat(mrb, str, owner); - mrb_str_cat_lit(mrb, str, ")#"); - mrb_str_concat(mrb, str, name); + { + 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 { + mrb_str_concat(mrb, str, mrb_obj_value(rklass)); + mrb_str_cat_lit(mrb, str, "("); + mrb_str_concat(mrb, str, owner); + mrb_str_cat_lit(mrb, str, ")#"); + mrb_str_concat(mrb, str, name); + } } finish:; if (!mrb_nil_p(proc)) {