postgres.git / summary / log / commit / refs
commit 0c08856856f54056ce8db116e9d254fda114c383
Author: Thomas Munro <tmunro@postgresql.org>
Date: Mon Jul 19 22:49:08 2021 +0000
First released in: 15.0
Don't use #if inside function-like macro arguments.
No concrete problem reported, but in the past it's been known to cause
problems on some compilers so let's avoid doing that.
Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/234364.1626704007%40sss.pgh.pa.us
src/backend/storage/file/fd.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index abb054ad7f3..5d5e8ae94e0 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -1065,13 +1065,7 @@ tryAgain:
*/
StaticAssertStmt((PG_O_DIRECT &
(O_APPEND |
-#if defined(O_CLOEXEC)
- O_CLOEXEC |
-#endif
O_CREAT |
-#if defined(O_DSYNC)
- O_DSYNC |
-#endif
O_EXCL |
O_RDWR |
O_RDONLY |
@@ -1079,6 +1073,15 @@ tryAgain:
O_TRUNC |
O_WRONLY)) == 0,
"PG_O_DIRECT value collides with standard flag");
+#if defined(O_CLOEXEC)
+ StaticAssertStmt((PG_O_DIRECT & O_CLOEXEC) == 0,
+ "PG_O_DIRECT value collides with O_CLOEXEC");
+#endif
+#if defined(O_DSYNC)
+ StaticAssertStmt((PG_O_DIRECT & O_DSYNC) == 0,
+ "PG_O_DIRECT value collides with O_DSYNC");
+#endif
+
fd = open(fileName, fileFlags & ~PG_O_DIRECT, fileMode);
#else
fd = open(fileName, fileFlags, fileMode);
[parent: 0d2cb6b2bbc3]