From e5dd162a07ccf49a49740edfb535652b184266c3 Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Sat, 7 Aug 2004 17:21:27 +0000 Subject: [PATCH] [Bug #923315] Produce correct result on AIX --- Modules/selectmodule.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index 26b918e3ce..81c9e3cd98 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; -- 2.50.1