Fix build problems with the platform SDK on windows. It is not sufficient to test for the C compiler version when determining if we have the secure CRT from microsoft. Must test with an undocumented macro, __STDC_SECURE_LIB__ too.
This commit is contained in:
parent
2eda1b78f9
commit
74c3ea0a0f
|
@ -467,7 +467,7 @@ time_strftime(PyObject *self, PyObject *args)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
free(outbuf);
|
free(outbuf);
|
||||||
#if defined _MSC_VER && _MSC_VER >= 1400
|
#if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__)
|
||||||
/* VisualStudio .NET 2005 does this properly */
|
/* VisualStudio .NET 2005 does this properly */
|
||||||
if (buflen == 0 && errno == EINVAL) {
|
if (buflen == 0 && errno == EINVAL) {
|
||||||
PyErr_SetString(PyExc_ValueError, "Invalid format string");
|
PyErr_SetString(PyExc_ValueError, "Invalid format string");
|
||||||
|
|
|
@ -1967,7 +1967,7 @@ static PyMethodDef functions[] = {
|
||||||
if (PyDict_SetItemString(bdict, # TYPE, PyExc_ ## TYPE)) \
|
if (PyDict_SetItemString(bdict, # TYPE, PyExc_ ## TYPE)) \
|
||||||
Py_FatalError("Module dictionary insertion problem.");
|
Py_FatalError("Module dictionary insertion problem.");
|
||||||
|
|
||||||
#if defined _MSC_VER && _MSC_VER >= 1400
|
#if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__)
|
||||||
/* crt variable checking in VisualStudio .NET 2005 */
|
/* crt variable checking in VisualStudio .NET 2005 */
|
||||||
#include <crtdbg.h>
|
#include <crtdbg.h>
|
||||||
|
|
||||||
|
@ -2120,7 +2120,7 @@ _PyExc_Init(void)
|
||||||
|
|
||||||
Py_DECREF(bltinmod);
|
Py_DECREF(bltinmod);
|
||||||
|
|
||||||
#if defined _MSC_VER && _MSC_VER >= 1400
|
#if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__)
|
||||||
/* Set CRT argument error handler */
|
/* Set CRT argument error handler */
|
||||||
prevCrtHandler = _set_invalid_parameter_handler(InvalidParameterHandler);
|
prevCrtHandler = _set_invalid_parameter_handler(InvalidParameterHandler);
|
||||||
/* turn off assertions in debug mode */
|
/* turn off assertions in debug mode */
|
||||||
|
@ -2133,7 +2133,7 @@ _PyExc_Fini(void)
|
||||||
{
|
{
|
||||||
Py_XDECREF(PyExc_MemoryErrorInst);
|
Py_XDECREF(PyExc_MemoryErrorInst);
|
||||||
PyExc_MemoryErrorInst = NULL;
|
PyExc_MemoryErrorInst = NULL;
|
||||||
#if defined _MSC_VER && _MSC_VER >= 1400
|
#if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__)
|
||||||
/* reset CRT error handling */
|
/* reset CRT error handling */
|
||||||
_set_invalid_parameter_handler(prevCrtHandler);
|
_set_invalid_parameter_handler(prevCrtHandler);
|
||||||
_CrtSetReportMode(_CRT_ASSERT, prevCrtReportMode);
|
_CrtSetReportMode(_CRT_ASSERT, prevCrtReportMode);
|
||||||
|
|
|
@ -241,7 +241,7 @@ open_the_file(PyFileObject *f, char *name, char *mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (f->f_fp == NULL) {
|
if (f->f_fp == NULL) {
|
||||||
#if defined _MSC_VER && _MSC_VER < 1400
|
#if defined _MSC_VER && (_MSC_VER < 1400 || !defined(__STDC_SECURE_LIB__))
|
||||||
/* MSVC 6 (Microsoft) leaves errno at 0 for bad mode strings,
|
/* MSVC 6 (Microsoft) leaves errno at 0 for bad mode strings,
|
||||||
* across all Windows flavors. When it sets EINVAL varies
|
* across all Windows flavors. When it sets EINVAL varies
|
||||||
* across Windows flavors, the exact conditions aren't
|
* across Windows flavors, the exact conditions aren't
|
||||||
|
|
Loading…
Reference in New Issue