diff options
author | Mike Blumenkrantz <zmike@samsung.com> | 2018-06-29 17:10:26 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@samsung.com> | 2018-07-05 15:11:55 -0400 |
commit | cba95178d5bd76ce15beda5662749e54988fb900 (patch) | |
tree | 02a6d518982c7d349d8fad4caf7432962f377e31 | |
parent | 7a8ff655c8c26afafadbf98d86d2bccb8c6ca3f2 (diff) | |
download | efl-cba95178d5bd76ce15beda5662749e54988fb900.tar.gz |
eo/base_class: explicitly refuse to set an object as its own parent
somehow this has been possible until now. no.
@fix
Differential Revision: https://phab.enlightenment.org/D6489
-rw-r--r-- | src/lib/eo/eo_base_class.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c index 16d59c0470..5acc70bca2 100644 --- a/src/lib/eo/eo_base_class.c +++ b/src/lib/eo/eo_base_class.c @@ -715,7 +715,7 @@ _efl_object_parent_set(Eo *obj, Efl_Object_Data *pd, Eo *parent_id) if (parent_id != NULL) { EO_OBJ_POINTER_GOTO(parent_id, parent_obj, err_impossible); - bad_parent = parent_obj->invalidate; + bad_parent = parent_obj->invalidate || (obj == parent_id); EO_OBJ_DONE(parent_id); } @@ -786,8 +786,12 @@ _efl_object_parent_set(Eo *obj, Efl_Object_Data *pd, Eo *parent_id) err_parent_done: EO_OBJ_DONE(obj); err_parent: - ERR("New parent %p for object %p is not a valid Eo object.", - parent_id, obj); + if (obj == parent_id) + ERR("New parent %p for object %p will not be set: THIS IS THE SAME OBJECT.", + parent_id, obj); + else + ERR("New parent %p for object %p is not a valid Eo object.", + parent_id, obj); return; err_impossible: |