Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 95d3954

Browse files
committed
Don't Insert() a VFD entry until it's fully built.
Otherwise, if FDDEBUG is enabled, the debugging output fails because it tries to read the fileName, which isn't set up yet (and should in fact always be NULL). AFAICT, this has been wrong since Berkeley. Before 96bf88d, it would accidentally fail to crash on platforms where snprintf() is forgiving about being passed a NULL pointer for %s; but the file name intended to be included in the debug output wouldn't ever have shown up. Report and fix by Greg Nancarrow. Although this is only visibly broken in custom-made builds, it still seems worth back-patching to all supported branches, as the FDDEBUG code is pretty useless as it stands. Discussion: https://postgr.es/m/CAJcOf-cUDgm9qYtC_B6XrC6MktMPNRby2p61EtSGZKnfotMArw@mail.gmail.com
1 parent fea5960 commit 95d3954

File tree

1 file changed

+2
-2
lines changed
  • src/backend/storage/file

1 file changed

+2
-2
lines changed

src/backend/storage/file/fd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1485,8 +1485,6 @@ PathNameOpenFilePerm(const char *fileName, int fileFlags, mode_t fileMode)
14851485
DO_DB(elog(LOG, "PathNameOpenFile: success %d",
14861486
vfdP->fd));
14871487

1488-
Insert(file);
1489-
14901488
vfdP->fileName = fnamecopy;
14911489
/* Saved flags are adjusted to be OK for re-opening file */
14921490
vfdP->fileFlags = fileFlags & ~(O_CREAT | O_TRUNC | O_EXCL);
@@ -1495,6 +1493,8 @@ PathNameOpenFilePerm(const char *fileName, int fileFlags, mode_t fileMode)
14951493
vfdP->fdstate = 0x0;
14961494
vfdP->resowner = NULL;
14971495

1496+
Insert(file);
1497+
14981498
return file;
14991499
}
15001500

0 commit comments

Comments
 (0)