summaryrefslogtreecommitdiffstats
path: root/Modules/selectmodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/selectmodule.c')
-rw-r--r--Modules/selectmodule.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 26b918e..81c9e3c 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -511,7 +511,11 @@ poll_poll(pollObject *self, PyObject *args)
}
PyTuple_SET_ITEM(value, 0, num);
- num = PyInt_FromLong(self->ufds[i].revents);
+ /* The &0xffff is a workaround for AIX. 'revents'
+ is a 16-bit short, and IBM assigned POLLNVAL
+ to be 0x8000, so the conversion to int results
+ in a negative number. See SF bug #923315. */
+ num = PyInt_FromLong(self->ufds[i].revents & 0xffff);
if (num == NULL) {
Py_DECREF(value);
goto error;