From 0c08856856f54056ce8db116e9d254fda114c383 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Tue, 20 Jul 2021 10:49:08 +1200 Subject: [PATCH] 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 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 abb054ad7f..5d5e8ae94e 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);