Issue #22821: Fixed fcntl() with integer argument on 64-bit big-endian

platforms.
This commit is contained in:
Serhiy Storchaka 2014-11-10 11:25:50 +02:00
commit 5a8dacf9c6
2 changed files with 6 additions and 3 deletions

View File

@ -183,6 +183,9 @@ Core and Builtins
Library
-------
- Issue #22821: Fixed fcntl() with integer argument on 64-bit big-endian
platforms.
- Issue #21650: Add an `--sort-keys` option to json.tool CLI.
- Issues #814253, #9179: Group references and conditional group references now

View File

@ -60,7 +60,7 @@ static PyObject *
fcntl_fcntl_impl(PyModuleDef *module, int fd, int code, PyObject *arg)
/*[clinic end generated code: output=afc5bfa74a03ef0d input=4850c13a41e86930]*/
{
int int_arg = 0;
unsigned int int_arg = 0;
int ret;
char *str;
Py_ssize_t len;
@ -88,7 +88,7 @@ fcntl_fcntl_impl(PyModuleDef *module, int fd, int code, PyObject *arg)
PyErr_Clear();
parse_result = PyArg_Parse(arg,
"l;fcntl requires a file or file descriptor,"
"I;fcntl requires a file or file descriptor,"
" an integer and optionally a third integer or a string",
&int_arg);
if (!parse_result) {
@ -97,7 +97,7 @@ fcntl_fcntl_impl(PyModuleDef *module, int fd, int code, PyObject *arg)
}
Py_BEGIN_ALLOW_THREADS
ret = fcntl(fd, code, int_arg);
ret = fcntl(fd, code, (int)int_arg);
Py_END_ALLOW_THREADS
if (ret < 0) {
PyErr_SetFromErrno(PyExc_IOError);