summaryrefslogtreecommitdiff
path: root/Include/pyport.h
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@microsoft.com>2015-04-12 00:26:27 -0400
committerSteve Dower <steve.dower@microsoft.com>2015-04-12 00:26:27 -0400
commit8fc8980c96f58a7f06e4e3133735807bd245c658 (patch)
tree04376ea1928a20c88b506e836ab82cc266cc85ae /Include/pyport.h
parentfe0a41aae425c61364b79c18ca8321dffed3ac40 (diff)
downloadcpython-git-8fc8980c96f58a7f06e4e3133735807bd245c658.tar.gz
Issue #23524: Replace _PyVerify_fd function with calls to _set_thread_local_invalid_parameter_handler.
Diffstat (limited to 'Include/pyport.h')
-rw-r--r--Include/pyport.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/Include/pyport.h b/Include/pyport.h
index e4b2cf00c1..82ad7183fb 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -877,4 +877,24 @@ extern pid_t forkpty(int *, char *, struct termios *, struct winsize *);
#define PY_LITTLE_ENDIAN 1
#endif
+#ifdef Py_BUILD_CORE
+/*
+ * Macros to protect CRT calls against instant termination when passed an
+ * invalid parameter (issue23524).
+ */
+#if defined _MSC_VER && _MSC_VER >= 1900
+
+extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler;
+#define _Py_BEGIN_SUPPRESS_IPH { _invalid_parameter_handler _Py_old_handler = \
+ _set_thread_local_invalid_parameter_handler(_Py_silent_invalid_parameter_handler);
+#define _Py_END_SUPPRESS_IPH _set_thread_local_invalid_parameter_handler(_Py_old_handler); }
+
+#else
+
+#define _Py_BEGIN_SUPPRESS_IPH
+#define _Py_END_SUPPRESS_IPH
+
+#endif /* _MSC_VER >= 1900 */
+#endif /* Py_BUILD_CORE */
+
#endif /* Py_PYPORT_H */