summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZackery Spytz <zspytz@gmail.com>2019-02-25 23:56:44 (GMT)
committerSteve Dower <steve.dower@microsoft.com>2019-02-25 23:56:44 (GMT)
commit6673decfa0fb078f60587f5cb5e98460eea137c2 (patch)
tree2d7a47850338e109f4fff4892468d6739a3c3a1a
parentaadef2b41600cb6a4f845cdc4cea001c916d8745 (diff)
downloadcpython-6673decfa0fb078f60587f5cb5e98460eea137c2.zip
cpython-6673decfa0fb078f60587f5cb5e98460eea137c2.tar.gz
cpython-6673decfa0fb078f60587f5cb5e98460eea137c2.tar.bz2
bpo-24643: Fix "#define timezone _timezone" clashes on Windows (GH-12019)
-rw-r--r--Misc/NEWS.d/next/Windows/2019-02-24-07-52-39.bpo-24643.PofyiS.rst1
-rw-r--r--Modules/timemodule.c20
-rw-r--r--PC/pyconfig.h7
3 files changed, 16 insertions, 12 deletions
diff --git a/Misc/NEWS.d/next/Windows/2019-02-24-07-52-39.bpo-24643.PofyiS.rst b/Misc/NEWS.d/next/Windows/2019-02-24-07-52-39.bpo-24643.PofyiS.rst
new file mode 100644
index 0000000..7bc62d8
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2019-02-24-07-52-39.bpo-24643.PofyiS.rst
@@ -0,0 +1 @@
+Fix name collisions due to ``#define timezone _timezone`` in PC/pyconfig.h.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 2e0f08d..7c01cef 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -38,6 +38,16 @@
# include <sanitizer/msan_interface.h>
#endif
+#ifdef _MSC_VER
+#define _Py_timezone _timezone
+#define _Py_daylight _daylight
+#define _Py_tzname _tzname
+#else
+#define _Py_timezone timezone
+#define _Py_daylight daylight
+#define _Py_tzname tzname
+#endif
+
#define SEC_TO_NS (1000 * 1000 * 1000)
/* Forward declarations */
@@ -1600,18 +1610,18 @@ init_timezone(PyObject *m)
#ifdef HAVE_DECL_TZNAME
PyObject *otz0, *otz1;
tzset();
- PyModule_AddIntConstant(m, "timezone", timezone);
+ PyModule_AddIntConstant(m, "timezone", _Py_timezone);
#ifdef HAVE_ALTZONE
PyModule_AddIntConstant(m, "altzone", altzone);
#else
- PyModule_AddIntConstant(m, "altzone", timezone-3600);
+ PyModule_AddIntConstant(m, "altzone", _Py_timezone-3600);
#endif
- PyModule_AddIntConstant(m, "daylight", daylight);
- otz0 = PyUnicode_DecodeLocale(tzname[0], "surrogateescape");
+ PyModule_AddIntConstant(m, "daylight", _Py_daylight);
+ otz0 = PyUnicode_DecodeLocale(_Py_tzname[0], "surrogateescape");
if (otz0 == NULL) {
return -1;
}
- otz1 = PyUnicode_DecodeLocale(tzname[1], "surrogateescape");
+ otz1 = PyUnicode_DecodeLocale(_Py_tzname[1], "surrogateescape");
if (otz1 == NULL) {
Py_DECREF(otz0);
return -1;
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index 42bbc69..6f8fda6 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -192,13 +192,6 @@ typedef int pid_t;
#define Py_IS_FINITE(X) _finite(X)
#define copysign _copysign
-/* VS 2015 defines these names with a leading underscore */
-#if _MSC_VER >= 1900
-#define timezone _timezone
-#define daylight _daylight
-#define tzname _tzname
-#endif
-
/* Side by Side assemblies supported in VS 2005 and VS 2008 but not 2010*/
#if _MSC_VER >= 1400 && _MSC_VER < 1600
#define HAVE_SXS 1