Issue #22821: Fixed fcntl() with integer argument on 64-bit big-endian
platforms.
diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c
index 87662dd..1f1cef9 100644
--- a/Modules/fcntlmodule.c
+++ b/Modules/fcntlmodule.c
@@ -60,7 +60,7 @@
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 @@
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 @@
}
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);