forked from enlightenment/efl
eo: Check refs in efl_data_scope_safe_get
This makes sure the object is actually still alive and kicking before returning any data. Otherwise the "safe" word is a bit of an abuse... Ref T5869 @fix
This commit is contained in:
parent
521e2ab83c
commit
e2f8ba7ad9
|
@ -2053,6 +2053,7 @@ efl_data_scope_safe_get(const Eo *obj_id, const Efl_Class *klass_id)
|
|||
if (!obj_id) return NULL;
|
||||
EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, NULL);
|
||||
EO_CLASS_POINTER_GOTO(klass_id, klass, err_klass);
|
||||
if (obj->user_refcount <= 0) goto err_klass;
|
||||
|
||||
if (_eo_class_mro_has(obj->klass, klass))
|
||||
ret = _efl_data_scope_safe_get(obj, klass);
|
||||
|
|
|
@ -337,6 +337,7 @@ START_TEST(efl_data_safe_fetch)
|
|||
fail_if(efl_data_scope_safe_get(obj, SIMPLE2_CLASS) != NULL);
|
||||
fail_if(efl_data_scope_safe_get(NULL, EFL_OBJECT_CLASS) != NULL);
|
||||
efl_unref(obj);
|
||||
fail_if(efl_data_scope_safe_get(obj, SIMPLE3_CLASS) != NULL);
|
||||
|
||||
efl_object_shutdown();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue