aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauro Moura <lauromoura@expertisesolutions.com.br>2018-03-15 22:07:18 -0700
committerCedric BAIL <cedric@osg.samsung.com>2018-03-15 22:10:27 -0700
commit47ac8689f1372639f410a2e2f612c62db612d143 (patch)
tree152bafcdf6db536ee0fb0f0a684ffcdd86315f5d
parenteolian: more stringent and fine-grained validation (diff)
downloadefl-47ac8689f1372639f410a2e2f612c62db612d143.tar.gz
eo: Orphan an object that is being invalidated.
Summary: This will avoid infinite loops and errors when the parent tries to orphan an invalidated child. Fixes https://phab.enlightenment.org/T6780 Test Plan: Run `make check` Reviewers: cedric Maniphest Tasks: https://phab.enlightenment.org/T6780 Differential Revision: https://phab.enlightenment.org/D5839 Reviewed-by: Cedric BAIL <cedric@osg.samsung.com>
-rw-r--r--src/lib/eo/eo_base_class.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c
index 10471541d9..5fd47c4689 100644
--- a/src/lib/eo/eo_base_class.c
+++ b/src/lib/eo/eo_base_class.c
@@ -2169,9 +2169,11 @@ _efl_object_finalize(Eo *obj, Efl_Object_Data *pd EINA_UNUSED)
}
static void
-_efl_object_invalidate(Eo *obj EINA_UNUSED, Efl_Object_Data *pd)
+_efl_object_invalidate(Eo *obj, Efl_Object_Data *pd)
{
_efl_pending_futures_clear(pd);
+ if (efl_parent_get(obj))
+ efl_parent_set(obj, NULL);
pd->invalidate = EINA_TRUE;
}