raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=931d02378b3152b530d84bff09fd842cf0998f53

commit 931d02378b3152b530d84bff09fd842cf0998f53
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Thu Dec 5 17:41:48 2013 +0900

    efreet - fix recusrion checks need to pop as well as push.
    
    stable release - cherry-pick me!
    
    this fixes a lack of popping the efret recursion stack handler. this
    wasn't done in 1.8 and is a bug.
---
 src/bin/efreet/efreet_desktop_cache_create.c | 8 +++++++-
 src/bin/efreet/efreetd_cache.c               | 8 ++++++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/bin/efreet/efreet_desktop_cache_create.c 
b/src/bin/efreet/efreet_desktop_cache_create.c
index 9ddf26d..d67084d 100644
--- a/src/bin/efreet/efreet_desktop_cache_create.c
+++ b/src/bin/efreet/efreet_desktop_cache_create.c
@@ -153,7 +153,11 @@ cache_scan(Eina_Inarray *stack, const char *path, const 
char *base_id,
     eina_inarray_push(stack, &st);
 
     it = eina_file_stat_ls(path);
-    if (!it) return 1;
+    if (!it)
+    {
+        eina_inarray_pop(stack);
+        return 1;
+    }
     id[0] = '\0';
     EINA_ITERATOR_FOREACH(it, info)
     {
@@ -182,11 +186,13 @@ cache_scan(Eina_Inarray *stack, const char *path, const 
char *base_id,
             if (!cache_add(info->path, file_id, priority, changed))
             {
                 eina_iterator_free(it);
+                eina_inarray_pop(stack);
                 return 0;
             }
         }
     }
     eina_iterator_free(it);
+    eina_inarray_pop(stack);
     return 1;
 }
 
diff --git a/src/bin/efreet/efreetd_cache.c b/src/bin/efreet/efreetd_cache.c
index 5b45487..0d58897 100644
--- a/src/bin/efreet/efreetd_cache.c
+++ b/src/bin/efreet/efreetd_cache.c
@@ -284,7 +284,7 @@ icon_changes_listen_recursive(Eina_Inarray *stack, const 
char *path, Eina_Bool b
      }
    if (ecore_file_is_dir(path)) icon_changes_monitor_add(path);
    it = eina_file_stat_ls(path);
-   if (!it) return;
+   if (!it) goto end;
    EINA_ITERATOR_FOREACH(it, info)
      {
         if (info->path[info->name_start] == '.') continue;
@@ -293,6 +293,8 @@ icon_changes_listen_recursive(Eina_Inarray *stack, const 
char *path, Eina_Bool b
           icon_changes_listen_recursive(stack, info->path, EINA_FALSE);
      }
    eina_iterator_free(it);
+end:
+   eina_inarray_pop(stack);
 }
 
 static void
@@ -319,7 +321,7 @@ desktop_changes_listen_recursive(Eina_Inarray *stack, const 
char *path, Eina_Boo
      }
    if (ecore_file_is_dir(path)) desktop_changes_monitor_add(path);
    it = eina_file_stat_ls(path);
-   if (!it) return;
+   if (!it) goto end;
    EINA_ITERATOR_FOREACH(it, info)
      {
         if (info->path[info->name_start] == '.') continue;
@@ -328,6 +330,8 @@ desktop_changes_listen_recursive(Eina_Inarray *stack, const 
char *path, Eina_Boo
           desktop_changes_listen_recursive(stack, info->path, EINA_FALSE);
      }
    eina_iterator_free(it);
+end:
+   eina_inarray_pop(stack);
 }
 
 static void

-- 


Reply via email to