]> granicus.if.org Git - postgresql/commitdiff
Silence MSVC warnings about redefinition of isnan
authorAndrew Dunstan <andrew@dunslane.net>
Sun, 18 Nov 2018 17:36:31 +0000 (12:36 -0500)
committerAndrew Dunstan <andrew@dunslane.net>
Sun, 18 Nov 2018 17:36:31 +0000 (12:36 -0500)
Some versions of perl.h define isnan when the compiler is MSVC. To avoid
warnings about this, undefine the symbol before including perl.h and
re-add the definition afterwards if it wasn't recreated.

Discussion: https://postgr.es/m/caf0568e-3c1f-07fd-6914-d903f22560f2@2ndQuadrant.com

src/pl/plperl/plperl.h

index 12fbad9787376d7e61327fcf862a0ca11f30d447..0a77860b98f438b8d9802f429b1876e8652c094e 100644 (file)
 
 /*
  * ActivePerl 5.18 and later are MinGW-built, and their headers use GCC's
- * __inline__.  Translate to something MSVC recognizes.
+ * __inline__.  Translate to something MSVC recognizes. Also, perl.h sometimes
+ * defines isnan, so undefine it here and put back the definition later if
+ * perl.h doesn't.
  */
 #ifdef _MSC_VER
 #define __inline__ inline
+#ifdef isname
+#undef isnan
+#endif
 #endif
 
 /*
 #define vprintf                        pg_vprintf
 #define printf(...)            pg_printf(__VA_ARGS__)
 
+/* put back the definition of isnan if needed */
+#ifdef _MSC_VER
+#ifndef isnan
+#define isnan(x) _isnan(x)
+#endif
+#endif
+
 /* perl version and platform portability */
 #define NEED_eval_pv
 #define NEED_newRV_noinc