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) (cherry picked from commit 04a0af9085ed91eace8af94f71a07b651a1af454)
This commit is contained in:
parent
851ec530b4
commit
99f39d32ab
11
src/aof.c
11
src/aof.c
@ -1426,7 +1426,7 @@ werr:
|
||||
* are inserted using a single command. */
|
||||
int rewriteAppendOnlyFile(char *filename) {
|
||||
rio aof;
|
||||
FILE *fp;
|
||||
FILE *fp = NULL;
|
||||
char tmpfile[256];
|
||||
char byte;
|
||||
|
||||
@ -1503,9 +1503,10 @@ int rewriteAppendOnlyFile(char *filename) {
|
||||
goto werr;
|
||||
|
||||
/* Make sure data will not remain on the OS's output buffers */
|
||||
if (fflush(fp) == EOF) goto werr;
|
||||
if (fsync(fileno(fp)) == -1) goto werr;
|
||||
if (fclose(fp) == EOF) goto werr;
|
||||
if (fflush(fp)) goto werr;
|
||||
if (fsync(fileno(fp))) goto werr;
|
||||
if (fclose(fp)) { fp = NULL; goto werr; }
|
||||
fp = NULL;
|
||||
|
||||
/* Use RENAME to make sure the DB file is changed atomically only
|
||||
* if the generate DB file is ok. */
|
||||
@ -1521,7 +1522,7 @@ int rewriteAppendOnlyFile(char *filename) {
|
||||
|
||||
werr:
|
||||
serverLog(LL_WARNING,"Write error writing append only file on disk: %s", strerror(errno));
|
||||
fclose(fp);
|
||||
if (fp) fclose(fp);
|
||||
unlink(tmpfile);
|
||||
stopSaving(0);
|
||||
return C_ERR;
|
||||
|
Loading…
x
Reference in New Issue
Block a user