jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e2f8ba7ad9d71d7eb6638e92f9c79e9dcb8e9474
commit e2f8ba7ad9d71d7eb6638e92f9c79e9dcb8e9474 Author: Jean-Philippe Andre <jp.an...@samsung.com> Date: Fri Aug 11 10:58:56 2017 +0900 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 --- src/lib/eo/eo.c | 1 + src/tests/eo/suite/eo_test_general.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index 20ed40b525..fb9f57f9ae 100644 --- a/src/lib/eo/eo.c +++ b/src/lib/eo/eo.c @@ -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); diff --git a/src/tests/eo/suite/eo_test_general.c b/src/tests/eo/suite/eo_test_general.c index 4ac8f22c54..9a26ffea42 100644 --- a/src/tests/eo/suite/eo_test_general.c +++ b/src/tests/eo/suite/eo_test_general.c @@ -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(); } --