]> granicus.if.org Git - postgresql/commitdiff
Undefine setlocale() macro on Win32
authorMagnus Hagander <magnus@hagander.net>
Tue, 1 Feb 2011 12:19:18 +0000 (13:19 +0100)
committerMagnus Hagander <magnus@hagander.net>
Tue, 1 Feb 2011 12:22:22 +0000 (13:22 +0100)
New versions of libintl redefine setlocale() to a macro
which causes problems when the backend and libintl are
linked against different versions of the runtime, which
is often the case in msvc builds.

Hiroshi Inoue, slightly updated comment by me

src/include/port.h

index 584a89eb702285fb1d22e760c1bb6f5ecc536fd9..65b80ef513412b748866a3e4122ea29c0bb7c2a4 100644 (file)
@@ -176,6 +176,15 @@ extern unsigned char pg_tolower(unsigned char ch);
 #ifdef printf
 #undef printf
 #endif
+/*
+ * Versions of libintl >= 0.18? try to replace setlocale() with a macro
+ * to their own versions.  Remove the macro, if it exists, because it
+ * ends up calling the wrong version when the backend and libintl use
+ * different versions of msvcrt.
+ */
+#if defined(setlocale) && defined(WIN32)
+#undef setlocale
+#endif
 
 extern int     pg_vsnprintf(char *str, size_t count, const char *fmt, va_list args);
 extern int