efreet: improve locking

Do find and ref inside lock, so no one can ref-- after we find desktop
This commit is contained in:
Sebastian Dransfeld 2013-11-29 22:18:51 +01:00
parent cc4aedaaee
commit 575f466a10
1 changed files with 2 additions and 1 deletions

View File

@ -213,11 +213,11 @@ efreet_desktop_new(const char *file)
tmp = eina_file_path_sanitize(file);
if (!tmp) return NULL;
eina_lock_take(&_lock);
desktop = efreet_cache_desktop_find(tmp);
free(tmp);
if (desktop)
{
eina_lock_take(&_lock);
desktop->ref++;
eina_lock_release(&_lock);
if (!efreet_desktop_environment_check(desktop))
@ -227,6 +227,7 @@ efreet_desktop_new(const char *file)
}
return desktop;
}
eina_lock_release(&_lock);
return efreet_desktop_uncached_new(file);
}