fix null deref again, this time with the power of spankies
authordiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 14 Jan 2011 08:04:23 +0000 (08:04 +0000)
committerdiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 14 Jan 2011 08:04:23 +0000 (08:04 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@56105 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/eina_mempool.c

index d71a38d..9d25e8a 100644 (file)
@@ -66,18 +66,18 @@ _new_va(const char *name,
         va_list args)
 {
    Eina_Mempool_Backend *be;
-   Eina_Mempool *mp = NULL;
+   Eina_Mempool *mp;
 
    Eina_Error err = EINA_ERROR_NOT_MEMPOOL_MODULE;
 
    eina_error_set(0);
    be = eina_hash_find(_backends, name);
-   if (!be)
+   if ((!be) || (!be->init))
       goto on_error;
 
    err = EINA_ERROR_OUT_OF_MEMORY;
    mp = calloc(1, sizeof(Eina_Mempool));
-   if ((!mp) || (!mp->backend.init))
+   if (!mp)
       goto on_error;
 
    /* FIXME why backend is not a pointer? */
@@ -88,7 +88,6 @@ _new_va(const char *name,
 
 on_error:
    eina_error_set(err);
-   if (mp) free(mp);
    return NULL;
 }