From 14a72b08007a345664a0e2e1a53874aaf576f96c Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 19 Jul 2017 09:03:07 +0900 Subject: Avoid constant-set duplication; ref #3747 --- src/class.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/class.c') diff --git a/src/class.c b/src/class.c index dd889cbbf..41a0fbad8 100644 --- a/src/class.c +++ b/src/class.c @@ -2178,10 +2178,14 @@ mrb_mod_const_set(mrb_state *mrb, mrb_value mod) mrb_get_args(mrb, "no", &id, &value); check_const_name_sym(mrb, id); - if (mrb_type(value) == MRB_TT_CLASS || mrb_type(value) == MRB_TT_MODULE) { + if ((mrb_type(value) == MRB_TT_CLASS || mrb_type(value) == MRB_TT_MODULE) + && !mrb_obj_iv_defined(mrb, mrb_obj_ptr(value), mrb_intern_lit(mrb, "__classid__"))) { + /* name unnamed classes/modules */ setup_class(mrb, mrb_class_ptr(mod), mrb_class_ptr(value), id); } - mrb_const_set(mrb, mod, id, value); + else { + mrb_const_set(mrb, mod, id, value); + } return value; } -- cgit v1.2.3