diff --git a/src/class.c b/src/class.c index ec9c648e5d..8751dcaf05 100644 --- a/src/class.c +++ b/src/class.c @@ -357,6 +357,7 @@ prepare_singleton_class(mrb_state *mrb, struct RBasic *o) { struct RClass *sc, *c; + mrb_assert(o->c); if (o->c->tt == MRB_TT_SCLASS) return; sc = MRB_OBJ_ALLOC(mrb, MRB_TT_SCLASS, mrb->class_class); sc->flags |= MRB_FL_CLASS_IS_INHERITED; @@ -1682,6 +1683,7 @@ mrb_singleton_class_ptr(mrb_state *mrb, mrb_value v) break; } obj = mrb_basic_ptr(v); + if (obj->c == NULL) return NULL; prepare_singleton_class(mrb, obj); return obj->c; }