bpo-9566: Fix some Windows x64 compiler warnings (#2492)

* bpo-9566: Silence liblzma warnings

* bpo-9566: Silence tcl warnings

* bpo-9566: Silence tk warnings

* bpo-9566: Silence tix warnings

* bpo-9566: Fix some library warnings

* bpo-9566: Fix msvcrtmodule.c warnings

* bpo-9566: Silence _bz2 warnings

* bpo-9566: Fixed some _ssl warnings

* bpo-9566: Fix _msi warnings

* bpo-9566: Silence _ctypes warnings

* Revert "bpo-9566: Fixed some _ssl warnings"

This reverts commit a639001c94.

* bpo-9566: Also consider NULL as a possible error in HANDLE_return_converter

* bpo-9566: whitespace fixes
This commit is contained in:
Segev Finer 2017-07-27 01:17:57 +03:00 committed by Steve Dower
parent f0851910eb
commit 679b566622
12 changed files with 84 additions and 59 deletions

View file

@ -33,14 +33,20 @@
#endif
/*[python input]
class intptr_t_converter(CConverter):
type = 'intptr_t'
class HANDLE_converter(CConverter):
type = 'void *'
format_unit = '"_Py_PARSE_INTPTR"'
class handle_return_converter(long_return_converter):
type = 'intptr_t'
cast = '(void *)'
conversion_fn = 'PyLong_FromVoidPtr'
class HANDLE_return_converter(CReturnConverter):
type = 'void *'
def render(self, function, data):
self.declare(data)
self.err_occurred_if(
"_return_value == NULL || _return_value == INVALID_HANDLE_VALUE",
data)
data.return_conversion.append(
'return_value = PyLong_FromVoidPtr(_return_value);\n')
class byte_char_return_converter(CReturnConverter):
type = 'int'
@ -59,7 +65,7 @@ class wchar_t_return_converter(CReturnConverter):
data.return_conversion.append(
'return_value = PyUnicode_FromOrdinal(_return_value);\n')
[python start generated code]*/
/*[python end generated code: output=da39a3ee5e6b4b0d input=b59f1663dba11997]*/
/*[python end generated code: output=da39a3ee5e6b4b0d input=2b25dc89e9e59534]*/
/*[clinic input]
module msvcrt
@ -152,7 +158,7 @@ msvcrt_setmode_impl(PyObject *module, int fd, int flags)
/*[clinic input]
msvcrt.open_osfhandle -> long
handle: intptr_t
handle: HANDLE
flags: int
/
@ -164,13 +170,13 @@ to os.fdopen() to create a file object.
[clinic start generated code]*/
static long
msvcrt_open_osfhandle_impl(PyObject *module, intptr_t handle, int flags)
/*[clinic end generated code: output=cede871bf939d6e3 input=cb2108bbea84514e]*/
msvcrt_open_osfhandle_impl(PyObject *module, void *handle, int flags)
/*[clinic end generated code: output=b2fb97c4b515e4e6 input=d5db190a307cf4bb]*/
{
int fd;
_Py_BEGIN_SUPPRESS_IPH
fd = _open_osfhandle(handle, flags);
fd = _open_osfhandle((intptr_t)handle, flags);
_Py_END_SUPPRESS_IPH
if (fd == -1)
PyErr_SetFromErrno(PyExc_OSError);
@ -179,7 +185,7 @@ msvcrt_open_osfhandle_impl(PyObject *module, intptr_t handle, int flags)
}
/*[clinic input]
msvcrt.get_osfhandle -> handle
msvcrt.get_osfhandle -> HANDLE
fd: int
/
@ -189,9 +195,9 @@ Return the file handle for the file descriptor fd.
Raises OSError if fd is not recognized.
[clinic start generated code]*/
static intptr_t
static void *
msvcrt_get_osfhandle_impl(PyObject *module, int fd)
/*[clinic end generated code: output=7ce761dd0de2b503 input=305900f4bfab76c7]*/
/*[clinic end generated code: output=aca01dfe24637374 input=5fcfde9b17136aa2]*/
{
intptr_t handle = -1;
@ -201,7 +207,7 @@ msvcrt_get_osfhandle_impl(PyObject *module, int fd)
if (handle == -1)
PyErr_SetFromErrno(PyExc_OSError);
return handle;
return (HANDLE)handle;
}
/* Console I/O */
@ -389,10 +395,10 @@ msvcrt_ungetwch_impl(PyObject *module, int unicode_char)
#ifdef _DEBUG
/*[clinic input]
msvcrt.CrtSetReportFile -> long
msvcrt.CrtSetReportFile -> HANDLE
type: int
file: int
file: HANDLE
/
Wrapper around _CrtSetReportFile.
@ -400,14 +406,14 @@ Wrapper around _CrtSetReportFile.
Only available on Debug builds.
[clinic start generated code]*/
static long
msvcrt_CrtSetReportFile_impl(PyObject *module, int type, int file)
/*[clinic end generated code: output=df291c7fe032eb68 input=bb8f721a604fcc45]*/
static void *
msvcrt_CrtSetReportFile_impl(PyObject *module, int type, void *file)
/*[clinic end generated code: output=9393e8c77088bbe9 input=290809b5f19e65b9]*/
{
long res;
HANDLE res;
_Py_BEGIN_SUPPRESS_IPH
res = (long)_CrtSetReportFile(type, (_HFILE)file);
res = _CrtSetReportFile(type, file);
_Py_END_SUPPRESS_IPH
return res;
@ -540,6 +546,20 @@ insertint(PyObject *d, char *name, int value)
}
}
static void
insertptr(PyObject *d, char *name, void *value)
{
PyObject *v = PyLong_FromVoidPtr(value);
if (v == NULL) {
/* Don't bother reporting this error */
PyErr_Clear();
}
else {
PyDict_SetItemString(d, name, v);
Py_DECREF(v);
}
}
PyMODINIT_FUNC
PyInit_msvcrt(void)
{
@ -568,9 +588,9 @@ PyInit_msvcrt(void)
insertint(d, "CRTDBG_MODE_FILE", _CRTDBG_MODE_FILE);
insertint(d, "CRTDBG_MODE_WNDW", _CRTDBG_MODE_WNDW);
insertint(d, "CRTDBG_REPORT_MODE", _CRTDBG_REPORT_MODE);
insertint(d, "CRTDBG_FILE_STDERR", (int)_CRTDBG_FILE_STDERR);
insertint(d, "CRTDBG_FILE_STDOUT", (int)_CRTDBG_FILE_STDOUT);
insertint(d, "CRTDBG_REPORT_FILE", (int)_CRTDBG_REPORT_FILE);
insertptr(d, "CRTDBG_FILE_STDERR", _CRTDBG_FILE_STDERR);
insertptr(d, "CRTDBG_FILE_STDOUT", _CRTDBG_FILE_STDOUT);
insertptr(d, "CRTDBG_REPORT_FILE", _CRTDBG_REPORT_FILE);
#endif
/* constants for the crt versions */