projects
/
platform
/
upstream
/
efl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
cdf56cb
)
Eo: Fixed potential infinite loop with child deletion.
author
Tom Hacohen
<tom@stosb.com>
Fri, 8 Nov 2013 12:10:50 +0000
(12:10 +0000)
committer
Tom Hacohen
<tom@stosb.com>
Fri, 8 Nov 2013 12:11:27 +0000
(12:11 +0000)
It looks like it should get into a loop for every object that has
children.
src/lib/eo/eo_base_class.c
patch
|
blob
|
history
diff --git
a/src/lib/eo/eo_base_class.c
b/src/lib/eo/eo_base_class.c
index
5d1e6d1
..
95ca1b5
100644
(file)
--- a/
src/lib/eo/eo_base_class.c
+++ b/
src/lib/eo/eo_base_class.c
@@
-891,11
+891,12
@@
static void
_destructor(Eo *obj, void *class_data, va_list *list EINA_UNUSED)
{
Private_Data *pd = class_data;
+ Eo *child;
DBG("%p - %s.", obj, eo_class_name_get(MY_CLASS));
-
while (pd->children
)
-
eo_do(eina_list_data_get(pd->children)
, eo_parent_set(NULL));
+
EINA_LIST_FREE(pd->children, child
)
+
eo_do(child
, eo_parent_set(NULL));
_eo_generic_data_del_all(class_data);
_wref_destruct(class_data);