From ca731fbfb6aa1ab376846870f1a4260b27bdf793 Mon Sep 17 00:00:00 2001 From: Jean Guyomarc'h Date: Sat, 16 Sep 2017 14:17:25 +0200 Subject: [PATCH] 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 b72dadb..a6d0d18 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; } -- 2.7.4