Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Avoid mixing designated and non-designated field initializers.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Mar 2025 15:06:30 +0000 (11:06 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Mar 2025 15:06:30 +0000 (11:06 -0400)
As revised by commit 9324c8c58, PG_MODULE_MAGIC constructed a
struct initializer containing both designated fields and a
non-designated "0".  That's okay in C, but not in C++, with
the result that extensions written in C++ failed to compile.
Change it to use only designated field initializers.

Author: Yurii Rashkovskii <yrashk@omnigres.com>
Discussion: https://postgr.es/m/CAG=VW14mctsR543gpzLCuJ9JgJqwa=ptmBfGvxEjs+k8Jf7-Bg@mail.gmail.com

src/include/fmgr.h

index 853870d3abfbd165ea4e88c0046ffabfd1dd746f..0fe7b4ebc7719e8bb04945965a27d9814e7db200 100644 (file)
@@ -522,7 +522,7 @@ extern PGDLLEXPORT const Pg_magic_struct *PG_MAGIC_FUNCTION_NAME(void); \
 const Pg_magic_struct * \
 PG_MAGIC_FUNCTION_NAME(void) \
 { \
-   static const Pg_magic_struct Pg_magic_data = PG_MODULE_MAGIC_DATA(0); \
+   static const Pg_magic_struct Pg_magic_data = PG_MODULE_MAGIC_DATA(.name = NULL); \
    return &Pg_magic_data; \
 } \
 extern int no_such_variable