jpeg pushed a commit to branch master.

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

commit a230e41409b21c05fab6a47ea2a5510ac848d9d1
Author: Jean-Philippe Andre <[email protected]>
Date:   Thu Aug 1 18:39:38 2013 +0900

    evas/cserve2: Fix Eina_File leak at shutdown
    
    cserve2_shutdown was not called
---
 src/lib/evas/canvas/evas_main.c        |  5 +++++
 src/lib/evas/cserve2/evas_cs2_client.c | 20 ++++++++++++++++++--
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index f755fcc..bf23273 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -95,6 +95,11 @@ evas_shutdown(void)
                   EINA_LOG_STATE_START,
                   EINA_LOG_STATE_SHUTDOWN);
 
+#ifdef EVAS_CSERVE2
+   if (getenv("EVAS_CSERVE2"))
+     evas_cserve2_shutdown();
+#endif
+
    eina_cow_del(evas_object_proxy_cow);
    eina_cow_del(evas_object_map_cow);
    eina_cow_del(evas_object_state_cow);
diff --git a/src/lib/evas/cserve2/evas_cs2_client.c 
b/src/lib/evas/cserve2/evas_cs2_client.c
index 5b8e463..6e65158 100644
--- a/src/lib/evas/cserve2/evas_cs2_client.c
+++ b/src/lib/evas/cserve2/evas_cs2_client.c
@@ -308,12 +308,14 @@ int
 evas_cserve2_shutdown(void)
 {
    const char zeros[sizeof(Msg_Index_List)] = {0};
+   Msg_Index_List *empty = (Msg_Index_List *) zeros;
 
    if ((--cserve2_init) > 0)
      return cserve2_init;
 
    DBG("Disconnecting from cserve2.");
-   _server_index_list_set((Msg_Base *) zeros, sizeof(Msg_Index_List));
+   empty->base.type = CSERVE2_INDEX_LIST;
+   _server_index_list_set((Msg_Base *) empty, sizeof(Msg_Index_List));
    _server_disconnect();
 
    return cserve2_init;
@@ -1948,7 +1950,21 @@ _shared_index_remap_check(Shared_Index *si, int elemsize)
 
    // Note: all checks are unlikely to be true.
 
-   if (!si || elemsize <= 0) return EINA_FALSE;
+   if (!si || elemsize <= 0)
+     return EINA_FALSE;
+
+   if (!si->path[0])
+     {
+        if (si->f)
+          {
+             DBG("Closing index map");
+             eina_file_map_free(si->f, si->data);
+             eina_file_close(si->f);
+             eina_hash_free(si->entries_by_hkey);
+             memset(si, 0, sizeof(*si));
+          }
+        return EINA_FALSE;
+     }
 
    if (si->generation_id != _index.generation_id)
      {

-- 


Reply via email to