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)
This commit is contained in:
parent
0047702aab
commit
04a0af9085
11
src/aof.c
11
src/aof.c
@ -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) {
|
|||||||
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) {
|
|||||||
|
|
||||||
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user