The previous name, __PASTE, conflicts with the NSS library, which
contains a header that also uses this name. The NSS header first
defines __PASTE to an expansion similar to ours, but then later
undefines __PASTE again, which breaks any further mingw header.

This fixes building NSS after mingw-w64 commit
8f441a62f1b474a29d61571d0da806193ce7ca1c.

Technically, the issue lies with NSS - the namespace of identifiers
starting with two underscores is reserved for the toolchain, where
user code shouldn't be using it.

However, to pragmatically avoid breaking existing code, use a more
unique name for the define in our headers.

Signed-off-by: Martin Storsjö <mar...@martin.st>
---
See e.g. [1] for the case where NSS headers use the same name.

[1] 
https://github.com/servo/nss/blob/3d07e85a597ce9c5c1ec80f85983efcb26aa58e1/lib/util/pkcs11.h#L181-L248
---
 mingw-w64-headers/crt/_mingw_mac.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mingw-w64-headers/crt/_mingw_mac.h 
b/mingw-w64-headers/crt/_mingw_mac.h
index 7ceabe747..f69bbec5d 100644
--- a/mingw-w64-headers/crt/_mingw_mac.h
+++ b/mingw-w64-headers/crt/_mingw_mac.h
@@ -7,8 +7,8 @@
 #ifndef _INC_CRTDEFS_MACRO
 #define _INC_CRTDEFS_MACRO
 
-#define __PASTE(x, y) x ## y
-#define __MINGW64_PASTE(x, y) __PASTE(x, y)
+#define __MINGW64_PASTE2(x, y) x ## y
+#define __MINGW64_PASTE(x, y) __MINGW64_PASTE2(x, y)
 
 #define __STRINGIFY(x) #x
 #define __MINGW64_STRINGIFY(x) \
-- 
2.43.0



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to