From da061849b0e00a50d4796f9a8a4fd46f2a2b9489 Mon Sep 17 00:00:00 2001 From: Paulo Alcantara Date: Fri, 21 Dec 2012 21:09:45 +0000 Subject: [PATCH] efl/cserve2: Fix invalid iteration over client references The _request_failed() function is called by error responses from slaves, and iterating over references of a entry and removing each of them must be done with EINA_LIST_FOREACH_SAFE(), since _entry_free_cb() calls _entry_reference_del() which then removes the reference that is used in the next iteration in for-loop from _request_failed(). Signed-off-by: Paulo Alcantara SVN revision: 81580 --- src/bin/evas/evas_cserve2_cache.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/evas/evas_cserve2_cache.c b/src/bin/evas/evas_cserve2_cache.c index be306196e7..a969b94f18 100644 --- a/src/bin/evas/evas_cserve2_cache.c +++ b/src/bin/evas/evas_cserve2_cache.c @@ -388,12 +388,12 @@ _open_request_response(File_Data *e, Slave_Msg_Image_Opened *resp, int *size) static void _request_failed(Entry *e, Error_Type type EINA_UNUSED) { - Eina_List *l; + Eina_List *l, *l_next; Reference *ref; e->request = NULL; - EINA_LIST_FOREACH(e->references, l, ref) + EINA_LIST_FOREACH_SAFE(e->references, l, l_next, ref) { Eina_Hash *hash = NULL; if (e->type == CSERVE2_IMAGE_FILE)