jayji pushed a commit to branch master.

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

commit ca731fbfb6aa1ab376846870f1a4260b27bdf793
Author: Jean Guyomarc'h <j...@guyomarch.bzh>
Date:   Sat Sep 16 14:17:25 2017 +0200

    eina: handle errors when creating a mempool
    
    If the backend initialization failed, the mempool would still be
    successfully created. The mempool is now destroyed on failure.
---
 src/lib/eina/eina_mempool.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/lib/eina/eina_mempool.c b/src/lib/eina/eina_mempool.c
index b72dadbce6..a6d0d18fe2 100644
--- a/src/lib/eina/eina_mempool.c
+++ b/src/lib/eina/eina_mempool.c
@@ -65,8 +65,8 @@ _new_va(const char *name,
         const char *options,
         va_list args)
 {
-   Eina_Mempool_Backend *be = NULL;
-   Eina_Mempool *mp;
+   Eina_Mempool_Backend *be;
+   Eina_Mempool *mp = NULL;
 
    if (getenv("EINA_MEMPOOL_PASS"))
      {
@@ -100,9 +100,13 @@ _new_va(const char *name,
      }
 
    mp->backend_data = mp->backend.init(context, options, args);
+   if (EINA_UNLIKELY(! mp->backend_data)) goto clean_mp;
    return mp;
 
+clean_mp:
+   free(mp->backend2);
 on_error:
+   free(mp);
    return NULL;
 }
 

-- 


Reply via email to