summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-02-27 08:21:39 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-02-27 08:21:39 +0900
commitb31a90614d90ddd4607933ba6992e000ad04fc59 (patch)
treef7530370022af3180d498d521fed463984c26dc7 /src/class.c
parent62071f7afe266bb5310d99f43e01c672fda589f6 (diff)
downloadmruby-b31a90614d90ddd4607933ba6992e000ad04fc59.tar.gz
mruby-b31a90614d90ddd4607933ba6992e000ad04fc59.zip
boot_defclass: super may be NULL
Diffstat (limited to 'src/class.c')
-rw-r--r--src/class.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/class.c b/src/class.c
index be38fd55c..84f8ea70e 100644
--- a/src/class.c
+++ b/src/class.c
@@ -731,8 +731,13 @@ boot_defclass(mrb_state *mrb, struct RClass *super)
struct RClass *c;
c = (struct RClass*)mrb_obj_alloc(mrb, MRB_TT_CLASS, mrb->class_class);
- c->super = super ? super : mrb->object_class;
- mrb_field_write_barrier(mrb, (struct RBasic*)c, (struct RBasic*)super);
+ if (super) {
+ c->super = super;
+ mrb_field_write_barrier(mrb, (struct RBasic*)c, (struct RBasic*)super);
+ }
+ else {
+ c->super = mrb->object_class;
+ }
c->mt = kh_init(mt, mrb);
return c;
}