Don't use PyNumber_Float() since it's is nearly useless.  Instead, rely on
PyFloat_AsDouble to generate a good error message.
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 805dc1a..0ff0b2c 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -214,11 +214,9 @@
 		return NULL;
 	}
 	else {
-		tout = PyNumber_Float(tout);
-		if (!tout)
+		timeout = PyFloat_AsDouble(tout);
+		if (timeout == -1 && PyErr_Occurred())
 			return NULL;
-		timeout = PyFloat_AS_DOUBLE(tout);
-		Py_DECREF(tout);
 		if (timeout > (double)LONG_MAX) {
 			PyErr_SetString(PyExc_OverflowError,
 					"timeout period too long");