eo: first check class desc in eo_class_new

This commit is contained in:
Jérémy Zurcher 2014-02-19 10:13:47 +01:00
parent 13502a159c
commit 2d52015823
1 changed files with 10 additions and 6 deletions

View File

@ -763,6 +763,14 @@ eo_class_new(const Eo_Class_Description *desc, const Eo_Class *parent_id, ...)
size_t extn_sz, mro_sz, mixins_sz;
Eina_List *extn_list, *mro, *mixins;
EINA_SAFETY_ON_NULL_RETURN_VAL(desc, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(desc->name, NULL);
DBG("Started building class '%s'", desc->name);
if (!_eo_class_check_op_descs(desc))
return NULL;
_Eo_Class *parent = _eo_class_pointer_get(parent_id);
#ifndef HAVE_EO_ID
if (parent && !EINA_MAGIC_CHECK((Eo_Base *) parent, EO_CLASS_EINA_MAGIC))
@ -772,12 +780,6 @@ eo_class_new(const Eo_Class_Description *desc, const Eo_Class *parent_id, ...)
}
#endif
EINA_SAFETY_ON_NULL_RETURN_VAL(desc, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(desc->name, NULL);
if (!_eo_class_check_op_descs(desc))
return NULL;
/* Check restrictions on Interface types. */
if (desc->type == EO_CLASS_TYPE_INTERFACE)
{
@ -1027,6 +1029,8 @@ eo_class_new(const Eo_Class_Description *desc, const Eo_Class *parent_id, ...)
_eo_class_constructor(klass);
DBG("Finished building class '%s'", klass->desc->name);
return _eo_class_id_get(klass);
}