[2.7] bpo-31334: Fix timeout in select.poll.poll() (GH-3277) (#4034)

Always pass -1, or INFTIM where defined, to the poll() system call when
a negative timeout is passed to the poll.poll([timeout]) method in the
select module. Various OSes throw an error with arbitrary negative
values..
(cherry picked from commit 6cfa927ceb931ad968b5b03e4a2bffb64a8a0604)
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index a38aa08..ce4c15b 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -530,6 +530,17 @@
             return NULL;
     }
 
+    /* On some OSes, typically BSD-based ones, the timeout parameter of the
+       poll() syscall, when negative, must be exactly INFTIM, where defined,
+       or -1. See issue 31334. */
+    if (timeout < 0) {
+#ifdef INFTIM
+        timeout = INFTIM;
+#else
+        timeout = -1;
+#endif
+    }
+
     /* Avoid concurrent poll() invocation, issue 8865 */
     if (self->poll_running) {
         PyErr_SetString(PyExc_RuntimeError,