@@ -186,8 +186,12 @@ static void type_class_interface_init(TypeImpl *ti, InterfaceImpl *iface)
.class_init = iface->interface_initfn,
.abstract = true,
};
+ TypeImpl *parent_ti = type_get_by_name(iface->parent);
char *name = g_strdup_printf("<%s::%s>", ti->name, iface->parent);
+ if (parent_ti) {
+ info.class_size = type_class_get_size(parent_ti);
+ }
info.name = name;
iface->type = type_register(&info);
g_free(name);
@@ -267,7 +271,6 @@ void object_initialize_with_type(void *data, TypeImpl *type)
g_assert(type->instance_size >= sizeof(Object));
type_class_init(type);
- g_assert(type->abstract == false);
memset(obj, 0, type->instance_size);
obj->class = type->class;