summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2018-06-29 17:10:26 -0400
committerMike Blumenkrantz <zmike@samsung.com>2018-07-05 15:11:55 -0400
commitcba95178d5bd76ce15beda5662749e54988fb900 (patch)
tree02a6d518982c7d349d8fad4caf7432962f377e31
parent7a8ff655c8c26afafadbf98d86d2bccb8c6ca3f2 (diff)
downloadefl-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.c10
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: