aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/eo/eo.c1
-rw-r--r--src/tests/eo/suite/eo_test_general.c1
2 files changed, 2 insertions, 0 deletions
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();
}