Make <assert.h> consistently available in frontend and backend
authorPeter Eisentraut <[email protected]>
Thu, 11 Dec 2025 08:19:17 +0000 (09:19 +0100)
committerPeter Eisentraut <[email protected]>
Thu, 11 Dec 2025 08:56:57 +0000 (09:56 +0100)
Previously, c.h made <assert.h> only available in frontends (#ifdef
FRONTEND), which was probably reasonable, because the only thing it
would give you is assert(), which you generally shouldn't use in the
backend.  But with C11, <assert.h> also makes available
static_assert(), which would be useful everywhere.  So this patch
moves <assert.h> to the commonly available header files in c.h and
fixes a small complication in regcustom.h that resulted from that.

Co-authored-by: Thomas Munro <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/CA%2BhUKGKvr0x_oGmQTUkx%3DODgSksT2EtgCA6LmGx_jQFG%3DsDUpg%40mail.gmail.com

src/include/c.h
src/include/regex/regcustom.h

index 55effdda0fd658fa17fcab8db899c04cb92bf2f3..d2cdc76644c57a83591c827befa0c7de9b0d0696 100644 (file)
@@ -59,6 +59,7 @@
 #include "pg_config_os.h"      /* config from include/port/PORTNAME.h */
 
 /* System header files that should be available everywhere in Postgres */
+#include <assert.h>
 #include <inttypes.h>
 #include <stdalign.h>
 #include <stdio.h>
@@ -872,7 +873,6 @@ typedef NameData *Name;
 
 #elif defined(FRONTEND)
 
-#include <assert.h>
 #define Assert(p) assert(p)
 #define AssertMacro(p) ((void) assert(p))
 
index 1c0e92f168f5ed2732975001123795dc6ee98499..4557e7a62c06657ee5134891cfb0cba6f17481a5 100644 (file)
@@ -53,6 +53,7 @@
 #define FREE(p)            pfree(VS(p))
 #define REALLOC(p,n)   repalloc_extended(VS(p),(n), MCXT_ALLOC_NO_OOM)
 #define INTERRUPT(re)  CHECK_FOR_INTERRUPTS()
+#undef assert
 #define assert(x)      Assert(x)
 
 /* internal character type and related */