Fix realpath usage

Always use realpath before interacting with the efreet_desktop_cache,
else it wont be consistent.

SVN revision: 47244
This commit is contained in:
Sebastian Dransfeld 2010-03-15 19:08:22 +00:00
parent 6ce0cadc63
commit 985b7e395a
1 changed files with 10 additions and 13 deletions

View File

@ -322,9 +322,13 @@ efreet_desktop_get(const char *file)
/* TODO: Check if we need to differentiate between desktop_new and desktop_get */ /* TODO: Check if we need to differentiate between desktop_new and desktop_get */
Efreet_Desktop *desktop; Efreet_Desktop *desktop;
if (!file) return NULL;
if (efreet_desktop_cache) if (efreet_desktop_cache)
{ {
desktop = eina_hash_find(efreet_desktop_cache, file); char rp[PATH_MAX];
if (!realpath(file, rp)) return NULL;
desktop = eina_hash_find(efreet_desktop_cache, rp);
if (desktop) if (desktop)
{ {
if (efreet_desktop_cache_check(desktop)) if (efreet_desktop_cache_check(desktop))
@ -344,7 +348,7 @@ efreet_desktop_get(const char *file)
/* TODO: Submit event to signal that this file has changed */ /* TODO: Submit event to signal that this file has changed */
desktop->cached = 0; desktop->cached = 0;
eina_hash_del(efreet_desktop_cache, file, NULL); eina_hash_del(efreet_desktop_cache, rp, NULL);
} }
} }
@ -424,11 +428,10 @@ EAPI Efreet_Desktop *
efreet_desktop_new(const char *file) efreet_desktop_new(const char *file)
{ {
Efreet_Desktop *desktop = NULL; Efreet_Desktop *desktop = NULL;
char *rp = NULL; char rp[PATH_MAX];
if (!file) return NULL; if (!file) return NULL;
//rp = ecore_file_realpath(file); if (!realpath(file, rp)) return NULL;
rp = strdup(file);
if (cache) if (cache)
{ {
/* TODO: Check if the cached version is out of date */ /* TODO: Check if the cached version is out of date */
@ -437,7 +440,6 @@ efreet_desktop_new(const char *file)
{ {
desktop->ref = 1; desktop->ref = 1;
desktop->eet = 1; desktop->eet = 1;
free(rp);
return desktop; return desktop;
} }
} }
@ -450,19 +452,14 @@ efreet_desktop_new(const char *file)
desktop = NEW(Efreet_Desktop, 1); desktop = NEW(Efreet_Desktop, 1);
if (!desktop) goto error; if (!desktop) goto error;
desktop->orig_path = rp; desktop->orig_path = strdup(rp);
if (!efreet_desktop_read(desktop)) goto error; if (!efreet_desktop_read(desktop)) goto error;
desktop->ref = 1; desktop->ref = 1;
return desktop; return desktop;
error: error:
if (desktop) if (desktop) efreet_desktop_free(desktop);
{
desktop->orig_path = NULL;
efreet_desktop_free(desktop);
}
if (rp) free(rp);
return NULL; return NULL;
} }