From fce9882a41a19b578c0f7440faaf804d8f5141a9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Thu, 4 Feb 2010 21:24:20 +0200 Subject: [PATCH] Fix memory leak and dummy warning --- src/modules/cache.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/modules/cache.c b/src/modules/cache.c index ba3b6f4108..ff06fa371c 100644 --- a/src/modules/cache.c +++ b/src/modules/cache.c @@ -36,6 +36,7 @@ #include /* strdup() */ #include #include +#include #include #ifdef HAVE_UNISTD_H @@ -452,14 +453,24 @@ void CacheSave (vlc_object_t *p_this, const char *dir, free (filename); return; } + msg_Dbg (p_this, "saving plugins cache %s", filename); FILE *file = utf8_fopen (tmpname, "wb"); if (file == NULL) - goto error; + { + if (errno != EACCES && errno != ENOENT) + msg_Warn (p_this, "cannot create %s (%m)", tmpname); + goto out; + } - msg_Dbg (p_this, "saving plugins cache %s", tmpname); if (CacheSaveBank (file, pp_cache, n)) - goto error; + { + msg_Warn (p_this, "cannot write %s (%m)", tmpname); + clearerr (file); + fclose (file); + utf8_unlink (tmpname); + goto out; + } #ifndef WIN32 utf8_rename (tmpname, filename); /* atomically replace old cache */ @@ -469,17 +480,9 @@ void CacheSave (vlc_object_t *p_this, const char *dir, fclose (file); utf8_rename (tmpname, filename); #endif - return; /* success! */ - -error: - msg_Warn (p_this, "cannot write %s (%m)", tmpname); +out: free (filename); free (tmpname); - if (file != NULL) - { - clearerr (file); - fclose (file); - } } static int CacheSaveConfig (FILE *, const module_t *); -- 2.39.5