From 575f466a1022b1827d7cbbf6f205d3ee674f4bec Mon Sep 17 00:00:00 2001 From: Sebastian Dransfeld Date: Fri, 29 Nov 2013 22:18:51 +0100 Subject: efreet: improve locking Do find and ref inside lock, so no one can ref-- after we find desktop --- src/lib/efreet/efreet_desktop.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/lib/efreet') diff --git a/src/lib/efreet/efreet_desktop.c b/src/lib/efreet/efreet_desktop.c index 9c4c4e7fed..dab5e56264 100644 --- a/src/lib/efreet/efreet_desktop.c +++ b/src/lib/efreet/efreet_desktop.c @@ -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); } -- cgit v1.2.1