diff options
author | Zackery Spytz <zspytz@gmail.com> | 2019-02-25 23:56:44 (GMT) |
---|---|---|
committer | Steve Dower <steve.dower@microsoft.com> | 2019-02-25 23:56:44 (GMT) |
commit | 6673decfa0fb078f60587f5cb5e98460eea137c2 (patch) | |
tree | 2d7a47850338e109f4fff4892468d6739a3c3a1a | |
parent | aadef2b41600cb6a4f845cdc4cea001c916d8745 (diff) | |
download | cpython-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.rst | 1 | ||||
-rw-r--r-- | Modules/timemodule.c | 20 | ||||
-rw-r--r-- | PC/pyconfig.h | 7 |
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 |