forked from enlightenment/efl
* eet: Fix a dead lock when eet file was open more than once.
SVN revision: 46892
This commit is contained in:
parent
c285985eeb
commit
9033f05263
|
@ -1333,7 +1333,7 @@ eet_internal_close(Eet_File *ef, Eina_Bool locked)
|
||||||
/* deref */
|
/* deref */
|
||||||
ef->references--;
|
ef->references--;
|
||||||
/* if its still referenced - dont go any further */
|
/* 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 */
|
/* flush any writes */
|
||||||
err = eet_flush2(ef);
|
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 not urgent to delete it - dont free it - leave it in cache */
|
||||||
if ((!ef->delete_me_now) && (ef->mode == EET_FILE_MODE_READ))
|
if ((!ef->delete_me_now) && (ef->mode == EET_FILE_MODE_READ))
|
||||||
{
|
goto on_error;
|
||||||
if (!locked) UNLOCK_CACHE;
|
|
||||||
return EET_ERROR_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* remove from cache */
|
/* remove from cache */
|
||||||
if (ef->mode == EET_FILE_MODE_READ)
|
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);
|
eet_cache_del(ef, &eet_writers, &eet_writers_num, &eet_writers_alloc);
|
||||||
|
|
||||||
/* we can unlock the cache now */
|
/* we can unlock the cache now */
|
||||||
if (!locked)
|
if (!locked) UNLOCK_CACHE;
|
||||||
{
|
|
||||||
UNLOCK_CACHE;
|
|
||||||
}
|
|
||||||
|
|
||||||
DESTROY_FILE(ef);
|
DESTROY_FILE(ef);
|
||||||
|
|
||||||
|
@ -1408,6 +1402,10 @@ eet_internal_close(Eet_File *ef, Eina_Bool locked)
|
||||||
/* free it */
|
/* free it */
|
||||||
free(ef);
|
free(ef);
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
on_error:
|
||||||
|
if (!locked) UNLOCK_CACHE;
|
||||||
|
return EET_ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI Eet_File *
|
EAPI Eet_File *
|
||||||
|
|
Loading…
Reference in New Issue