aboutsummaryrefslogtreecommitdiff
path: root/PC
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-06-10 18:49:23 +0200
committerGitHub <noreply@github.com>2020-06-10 18:49:23 +0200
commitf6e58aefde2e57e4cb11ea7743955da53a3f1e80 (patch)
treeae5a760fc2db639f50d8a08e600267b865ac852c /PC
parentbpo-40943: Replace PY_FORMAT_SIZE_T with "z" (GH-20781) (diff)
downloadcpython-f6e58aefde2e57e4cb11ea7743955da53a3f1e80.tar.gz
cpython-f6e58aefde2e57e4cb11ea7743955da53a3f1e80.tar.bz2
cpython-f6e58aefde2e57e4cb11ea7743955da53a3f1e80.zip
bpo-40826: Fix test_repl.test_close_stdin() on Windows (GH-20779)
test_repl.test_close_stdin() now calls support.suppress_msvcrt_asserts() to fix the test on Windows. * Move suppress_msvcrt_asserts() from test.libregrtest.setup to test.support. Make its verbose parameter optional: verbose=False by default. * Add msvcrt.GetErrorMode(). * SuppressCrashReport now uses GetErrorMode() and SetErrorMode() of the msvcrt module, rather than using ctypes. * Remove also an unused variable (deadline) in wait_process().
Diffstat (limited to 'PC')
-rw-r--r--PC/clinic/msvcrtmodule.c.h20
-rw-r--r--PC/msvcrtmodule.c20
2 files changed, 39 insertions, 1 deletions
diff --git a/PC/clinic/msvcrtmodule.c.h b/PC/clinic/msvcrtmodule.c.h
index 9701e8a63be..1ac82cb965b 100644
--- a/PC/clinic/msvcrtmodule.c.h
+++ b/PC/clinic/msvcrtmodule.c.h
@@ -590,6 +590,24 @@ exit:
#endif /* defined(_DEBUG) */
+PyDoc_STRVAR(msvcrt_GetErrorMode__doc__,
+"GetErrorMode($module, /)\n"
+"--\n"
+"\n"
+"Wrapper around GetErrorMode.");
+
+#define MSVCRT_GETERRORMODE_METHODDEF \
+ {"GetErrorMode", (PyCFunction)msvcrt_GetErrorMode, METH_NOARGS, msvcrt_GetErrorMode__doc__},
+
+static PyObject *
+msvcrt_GetErrorMode_impl(PyObject *module);
+
+static PyObject *
+msvcrt_GetErrorMode(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return msvcrt_GetErrorMode_impl(module);
+}
+
PyDoc_STRVAR(msvcrt_SetErrorMode__doc__,
"SetErrorMode($module, mode, /)\n"
"--\n"
@@ -629,4 +647,4 @@ exit:
#ifndef MSVCRT_SET_ERROR_MODE_METHODDEF
#define MSVCRT_SET_ERROR_MODE_METHODDEF
#endif /* !defined(MSVCRT_SET_ERROR_MODE_METHODDEF) */
-/*[clinic end generated code: output=ab3b5ce5c1447f0e input=a9049054013a1b77]*/
+/*[clinic end generated code: output=20dfbc768edce7c0 input=a9049054013a1b77]*/
diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c
index faceb03fba3..b7ff20ab0fb 100644
--- a/PC/msvcrtmodule.c
+++ b/PC/msvcrtmodule.c
@@ -483,6 +483,25 @@ msvcrt_set_error_mode_impl(PyObject *module, int mode)
#endif /* _DEBUG */
/*[clinic input]
+msvcrt.GetErrorMode
+
+Wrapper around GetErrorMode.
+[clinic start generated code]*/
+
+static PyObject *
+msvcrt_GetErrorMode_impl(PyObject *module)
+/*[clinic end generated code: output=3103fc6145913591 input=5a7fb083b6dd71fd]*/
+{
+ unsigned int res;
+
+ _Py_BEGIN_SUPPRESS_IPH
+ res = GetErrorMode();
+ _Py_END_SUPPRESS_IPH
+
+ return PyLong_FromUnsignedLong(res);
+}
+
+/*[clinic input]
msvcrt.SetErrorMode
mode: unsigned_int(bitwise=True)
@@ -520,6 +539,7 @@ static struct PyMethodDef msvcrt_functions[] = {
MSVCRT_GETCHE_METHODDEF
MSVCRT_PUTCH_METHODDEF
MSVCRT_UNGETCH_METHODDEF
+ MSVCRT_GETERRORMODE_METHODDEF
MSVCRT_SETERRORMODE_METHODDEF
MSVCRT_CRTSETREPORTFILE_METHODDEF
MSVCRT_CRTSETREPORTMODE_METHODDEF