@@ -380,7 +380,6 @@ method_to_s(mrb_state *mrb, mrb_value self)
380380 mrb_value klass = mrb_iv_get (mrb , self , MRB_SYM (_klass ));
381381 mrb_value name = mrb_iv_get (mrb , self , MRB_SYM (_name ));
382382 mrb_value str = mrb_str_new_lit (mrb , "#<" );
383- struct RClass * rklass ;
384383
385384 mrb_str_cat_cstr (mrb , str , mrb_obj_classname (mrb , self ));
386385 mrb_str_cat_lit (mrb , str , ": " );
@@ -394,14 +393,15 @@ method_to_s(mrb_state *mrb, mrb_value self)
394393 }
395394 }
396395
397- rklass = mrb_class_ptr (klass );
398- if (mrb_class_ptr (owner ) == rklass ) {
396+ struct RClass * ok = mrb_class_ptr (owner );
397+ struct RClass * rk = mrb_class_ptr (klass );
398+ struct RClass * rklass = mrb_class_real (rk ); /* skip internal class */
399+ if (ok == rk || ok == rklass ) {
399400 mrb_str_concat (mrb , str , owner );
400401 mrb_str_cat_lit (mrb , str , "#" );
401402 mrb_str_concat (mrb , str , name );
402403 }
403404 else {
404- rklass = mrb_class_real (rklass ); /* skip internal class */
405405 mrb_str_concat (mrb , str , mrb_obj_value (rklass ));
406406 mrb_str_cat_lit (mrb , str , "(" );
407407 mrb_str_concat (mrb , str , owner );
0 commit comments