Skip to content

Commit 6673dec

Browse files
ZackerySpytzzooba
authored andcommitted
bpo-24643: Fix "#define timezone _timezone" clashes on Windows (GH-12019)
1 parent aadef2b commit 6673dec

3 files changed

Lines changed: 16 additions & 12 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix name collisions due to ``#define timezone _timezone`` in PC/pyconfig.h.

Modules/timemodule.c

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@
3838
# include <sanitizer/msan_interface.h>
3939
#endif
4040

41+
#ifdef _MSC_VER
42+
#define _Py_timezone _timezone
43+
#define _Py_daylight _daylight
44+
#define _Py_tzname _tzname
45+
#else
46+
#define _Py_timezone timezone
47+
#define _Py_daylight daylight
48+
#define _Py_tzname tzname
49+
#endif
50+
4151
#define SEC_TO_NS (1000 * 1000 * 1000)
4252

4353
/* Forward declarations */
@@ -1600,18 +1610,18 @@ init_timezone(PyObject *m)
16001610
#ifdef HAVE_DECL_TZNAME
16011611
PyObject *otz0, *otz1;
16021612
tzset();
1603-
PyModule_AddIntConstant(m, "timezone", timezone);
1613+
PyModule_AddIntConstant(m, "timezone", _Py_timezone);
16041614
#ifdef HAVE_ALTZONE
16051615
PyModule_AddIntConstant(m, "altzone", altzone);
16061616
#else
1607-
PyModule_AddIntConstant(m, "altzone", timezone-3600);
1617+
PyModule_AddIntConstant(m, "altzone", _Py_timezone-3600);
16081618
#endif
1609-
PyModule_AddIntConstant(m, "daylight", daylight);
1610-
otz0 = PyUnicode_DecodeLocale(tzname[0], "surrogateescape");
1619+
PyModule_AddIntConstant(m, "daylight", _Py_daylight);
1620+
otz0 = PyUnicode_DecodeLocale(_Py_tzname[0], "surrogateescape");
16111621
if (otz0 == NULL) {
16121622
return -1;
16131623
}
1614-
otz1 = PyUnicode_DecodeLocale(tzname[1], "surrogateescape");
1624+
otz1 = PyUnicode_DecodeLocale(_Py_tzname[1], "surrogateescape");
16151625
if (otz1 == NULL) {
16161626
Py_DECREF(otz0);
16171627
return -1;

PC/pyconfig.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,6 @@ typedef int pid_t;
192192
#define Py_IS_FINITE(X) _finite(X)
193193
#define copysign _copysign
194194

195-
/* VS 2015 defines these names with a leading underscore */
196-
#if _MSC_VER >= 1900
197-
#define timezone _timezone
198-
#define daylight _daylight
199-
#define tzname _tzname
200-
#endif
201-
202195
/* Side by Side assemblies supported in VS 2005 and VS 2008 but not 2010*/
203196
#if _MSC_VER >= 1400 && _MSC_VER < 1600
204197
#define HAVE_SXS 1

0 commit comments

Comments
 (0)