summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--parseconfig.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/parseconfig.c b/parseconfig.c
index 79e2457..719af37 100644
--- a/parseconfig.c
+++ b/parseconfig.c
@@ -558,17 +558,24 @@ cfg_write_file(char *dname, char *filename)
if (-1 == unlink(bfile) && ENOENT != errno) {
fprintf(stderr,"unlink(%s): %s\n",bfile,strerror(errno));
- return -1;
+ goto err;
}
if (-1 == rename(filename,bfile) && ENOENT != errno) {
fprintf(stderr,"rename(%s,%s): %s\n",filename,bfile,strerror(errno));
- return -1;
+ goto err;
}
if (-1 == rename(tfile,filename)) {
fprintf(stderr,"rename(%s,%s): %s\n",tfile,filename,strerror(errno));
- return -1;
+ goto err;
}
+ free(bfile);
+ free(tfile);
return 0;
+
+err:
+ free(bfile);
+ free(tfile);
+ return -1;
}
/* ------------------------------------------------------------------------ */