[vlc-devel] commit: Fix memory leak and dummy warning ( Rémi Denis-Courmont )
git version control
git at videolan.org
Thu Feb 4 20:24:42 CET 2010
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Feb 4 21:24:20 2010 +0200| [fce9882a41a19b578c0f7440faaf804d8f5141a9] | committer: Rémi Denis-Courmont
Fix memory leak and dummy warning
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fce9882a41a19b578c0f7440faaf804d8f5141a9
---
src/modules/cache.c | 27 +++++++++++++++------------
1 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/src/modules/cache.c b/src/modules/cache.c
index ba3b6f4..ff06fa3 100644
--- a/src/modules/cache.c
+++ b/src/modules/cache.c
@@ -36,6 +36,7 @@
#include <string.h> /* strdup() */
#include <vlc_plugin.h>
#include <vlc_cpu.h>
+#include <errno.h>
#include <sys/types.h>
#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 *);
More information about the vlc-devel
mailing list