Enlightenment CVS committal

Author  : moom
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/lib


Modified Files:
        etk_cache.c 


Log Message:
* [Cache] Fix a segv when the cache is full..


===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_cache.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- etk_cache.c 17 Jan 2007 21:33:39 -0000      1.13
+++ etk_cache.c 17 Jan 2007 21:46:56 -0000      1.14
@@ -160,20 +160,22 @@
    Evas_List *l;
    
    if (!cache || !object || cache->size <= 0 || !filename)
-   {
-      if (cache && object)
-      {
-         if (cache->free_cb)
-            cache->free_cb(object, cache->free_cb_data);
-         evas_object_del(object);
-      }
       return;
-   }
    
    /* If the object is already cached, we move it at the end of the cache */
    if ((l = evas_object_data_get(object, "_Etk_Cache::Node")))
    {
       item = l->data;
+      if (item->filename != filename)
+      {
+         free(item->filename);
+         item->filename = strdup(filename);
+      }
+      if (item->key != key)
+      {
+         free(item->key);
+         item->key = strdup(key);
+      }
       cache->cached_objects = evas_list_remove_list(cache->cached_objects, l);
       cache->cached_objects = evas_list_append(cache->cached_objects, item);
       evas_object_data_set(item->object, "_Etk_Cache::Node", 
evas_list_last(cache->cached_objects));
@@ -184,13 +186,7 @@
    if (evas_list_count(cache->cached_objects) >= cache->size)
    {
       item = cache->cached_objects->data;
-      
       evas_object_del(item->object);
-      free(item->filename);
-      free(item->key);
-      free(item);
-      
-      cache->cached_objects = evas_list_remove_list(cache->cached_objects, 
cache->cached_objects);
    }
    
    /* We create a new cache-item for the object and we add it to the cache */



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to