diff options
-rw-r--r-- | parseconfig.c | 13 |
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; } /* ------------------------------------------------------------------------ */ |