* eet: Fix a dead lock when eet file was open more than once.

SVN revision: 46892
This commit is contained in:
Cedric BAIL 2010-03-05 17:29:37 +00:00
parent c285985eeb
commit 9033f05263
1 changed files with 7 additions and 9 deletions

View File

@ -1333,7 +1333,7 @@ eet_internal_close(Eet_File *ef, Eina_Bool locked)
/* deref */
ef->references--;
/* if its still referenced - dont go any further */
if (ef->references > 0) return EET_ERROR_NONE;
if (ef->references > 0) goto on_error;
/* flush any writes */
err = eet_flush2(ef);
@ -1342,10 +1342,7 @@ eet_internal_close(Eet_File *ef, Eina_Bool locked)
/* if not urgent to delete it - dont free it - leave it in cache */
if ((!ef->delete_me_now) && (ef->mode == EET_FILE_MODE_READ))
{
if (!locked) UNLOCK_CACHE;
return EET_ERROR_NONE;
}
goto on_error;
/* remove from cache */
if (ef->mode == EET_FILE_MODE_READ)
@ -1354,10 +1351,7 @@ eet_internal_close(Eet_File *ef, Eina_Bool locked)
eet_cache_del(ef, &eet_writers, &eet_writers_num, &eet_writers_alloc);
/* we can unlock the cache now */
if (!locked)
{
UNLOCK_CACHE;
}
if (!locked) UNLOCK_CACHE;
DESTROY_FILE(ef);
@ -1408,6 +1402,10 @@ eet_internal_close(Eet_File *ef, Eina_Bool locked)
/* free it */
free(ef);
return err;
on_error:
if (!locked) UNLOCK_CACHE;
return EET_ERROR_NONE;
}
EAPI Eet_File *