const Eobj_Class **kls_itr;
} Eobj_Kls_Itr_Node;
-static inline void
+static inline Eina_Bool
_eobj_kls_itr_init(Eobj *obj, Eobj_Op op)
{
if (obj->kls_itr &&
EINA_INLIST_CONTAINER_GET(obj->kls_itr, Eobj_Kls_Itr_Node))
{
- /* Nothing ATM. */
+ return EINA_FALSE;
}
else
{
node->kls_itr = obj->klass->mro;
obj->kls_itr = eina_inlist_prepend(obj->kls_itr,
EINA_INLIST_GET(node));
+
+ return EINA_TRUE;
}
}
Eina_Bool ret = EINA_TRUE;
va_list p_list;
- _eobj_kls_itr_init(obj, op);
+ Eina_Bool kls_itr_end = _eobj_kls_itr_init(obj, op);
obj_klass = _eobj_kls_itr_next(obj);
if (!obj_klass) goto end;
va_end(p_list);
end:
- _eobj_kls_itr_end(obj, op);
+ if (kls_itr_end) _eobj_kls_itr_end(obj, op);
return ret;
}