* eina: Remove memory leak (patch from Andre Dieb).

SVN revision: 40986
This commit is contained in:
Cedric BAIL 2009-06-09 16:02:20 +00:00
parent fca7b4aa43
commit 35526933af
2 changed files with 28 additions and 6 deletions

View File

@ -530,7 +530,6 @@ EAPI int eina_error_init(void)
{
char *level;
/* TODO register the eina's basic errors */
/* TODO load the environment variable for getting the log level */
if ((level = getenv("EINA_ERROR_LEVEL")))
{
_error_level = atoi(level);

View File

@ -123,8 +123,16 @@ eina_mempool_init(void)
{
char *path;
eina_hash_init();
eina_module_init();
if (!eina_hash_init())
{
fprintf(stderr, "Could not initialize eina hash module.\n");
return 0;
}
if (!eina_module_init())
{
fprintf(stderr, "Could not initialize eina module module.\n");
goto module_init_error;
}
EINA_ERROR_NOT_MEMPOOL_MODULE = eina_error_msg_register("Not a memory pool module.");
_backends = eina_hash_string_superfast_new(NULL);
@ -147,7 +155,8 @@ eina_mempool_init(void)
if (!_modules)
{
EINA_ERROR_PERR("ERROR: no mempool modules able to be loaded.\n");
abort();
eina_hash_free(_backends);
goto mempool_init_error;
}
eina_module_list_load(_modules);
/* builtin backends */
@ -165,6 +174,14 @@ eina_mempool_init(void)
#endif
}
return ++_init_count;
mempool_init_error:
eina_module_shutdown();
module_init_error:
eina_hash_shutdown();
return 0;
}
/**
@ -190,9 +207,15 @@ eina_mempool_shutdown(void)
ememoa_fixed_shutdown();
#endif
/* dynamic backends */
eina_module_list_unload(_modules);
eina_module_list_delete(_modules);
if (_modules)
eina_array_free(_modules);
eina_module_shutdown();
/* TODO delete the _modules list */
if (_backends)
eina_hash_free(_backends);
eina_hash_shutdown();
return 0;
}