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]