Unverified Commit 04a0af90 authored by Wen Hui's avatar Wen Hui Committed by GitHub
Browse files

fix double fclose in aofrewrite (#7919)

minor fix for a bug which happen on error handling code
and doesn't look like it could have caused any real harm
(fd number wouldn't have been reused yet)
parent 0047702a
...@@ -1449,7 +1449,7 @@ werr: ...@@ -1449,7 +1449,7 @@ werr:
* are inserted using a single command. */ * are inserted using a single command. */
int rewriteAppendOnlyFile(char *filename) { int rewriteAppendOnlyFile(char *filename) {
rio aof; rio aof;
FILE *fp; FILE *fp = NULL;
char tmpfile[256]; char tmpfile[256];
char byte; char byte;
...@@ -1526,9 +1526,10 @@ int rewriteAppendOnlyFile(char *filename) { ...@@ -1526,9 +1526,10 @@ int rewriteAppendOnlyFile(char *filename) {
goto werr; goto werr;
/* Make sure data will not remain on the OS's output buffers */ /* Make sure data will not remain on the OS's output buffers */
if (fflush(fp) == EOF) goto werr; if (fflush(fp)) goto werr;
if (fsync(fileno(fp)) == -1) goto werr; if (fsync(fileno(fp))) goto werr;
if (fclose(fp) == EOF) goto werr; if (fclose(fp)) { fp = NULL; goto werr; }
fp = NULL;
/* Use RENAME to make sure the DB file is changed atomically only /* Use RENAME to make sure the DB file is changed atomically only
* if the generate DB file is ok. */ * if the generate DB file is ok. */
...@@ -1544,7 +1545,7 @@ int rewriteAppendOnlyFile(char *filename) { ...@@ -1544,7 +1545,7 @@ int rewriteAppendOnlyFile(char *filename) {
werr: werr:
serverLog(LL_WARNING,"Write error writing append only file on disk: %s", strerror(errno)); serverLog(LL_WARNING,"Write error writing append only file on disk: %s", strerror(errno));
fclose(fp); if (fp) fclose(fp);
unlink(tmpfile); unlink(tmpfile);
stopSaving(0); stopSaving(0);
return C_ERR; return C_ERR;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment