From 2c668d674751babf6093ed3d076d2a8e560cf324 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Mon, 8 Dec 2008 14:23:26 +0000 Subject: [PATCH] The for loop inside _edje_file_del is accessing Edje_Real_Part that could be destroyed by _edje_cache_coll_unref. So moving the call to _edje_cache_coll_unref after the last use of Edje_Real_Part should be better. SVN revision: 38020 --- legacy/edje/src/lib/edje_load.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c index d4052816eb..118d9038c0 100644 --- a/legacy/edje/src/lib/edje_load.c +++ b/legacy/edje/src/lib/edje_load.c @@ -717,20 +717,6 @@ _edje_file_del(Edje *ed) _edje_programs_patterns_clean(ed); if (!((ed->file) && (ed->collection))) return; - if ((ed->file) && (ed->collection)) - { - Eina_List *l; - Edje_Part *ep; - - _edje_textblock_styles_del(ed); - EINA_LIST_FOREACH(ed->collection->parts, l, ep) - { - _edje_text_part_on_del(ed, ep); - _edje_color_class_on_del(ed, ep); - } - _edje_cache_coll_unref(ed->file, ed->collection); - ed->collection = NULL; - } if (ed->table_parts) { int i; @@ -787,6 +773,20 @@ _edje_file_del(Edje *ed) free(rp); } } + if ((ed->file) && (ed->collection)) + { + Eina_List *l; + Edje_Part *ep; + + _edje_textblock_styles_del(ed); + EINA_LIST_FOREACH(ed->collection->parts, l, ep) + { + _edje_text_part_on_del(ed, ep); + _edje_color_class_on_del(ed, ep); + } + _edje_cache_coll_unref(ed->file, ed->collection); + ed->collection = NULL; + } if (ed->file) { _edje_cache_file_unref(ed->file);