Use PyObject_AsFileDescriptor
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 23b7036..8f73d38 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -96,31 +96,9 @@
                     return -1;
 
 		Py_INCREF(o);
+		v = PyObject_AsFileDescriptor( o );
+		if (v == -1) goto finally;
 
-		if (PyInt_Check(o)) {
-			v = PyInt_AsLong(o);
-		}
-		else if ((meth = PyObject_GetAttrString(o, "fileno")) != NULL)
-		{
-			PyObject *fno = PyEval_CallObject(meth, NULL);
-			Py_DECREF(meth);
-			if (fno == NULL)
-				goto finally;
-
-                        if (!PyInt_Check(fno)) {
-				PyErr_SetString(PyExc_TypeError,
-                                       "fileno method returned a non-integer");
-				Py_DECREF(fno);
-				goto finally;
-                        }
-                        v = PyInt_AsLong(fno);
-			Py_DECREF(fno);
-		}
-		else {
-			PyErr_SetString(PyExc_TypeError,
-			"argument must be an int, or have a fileno() method.");
-			goto finally;
-		}
 #if defined(_MSC_VER)
 		max = 0;		     /* not used for Win32 */
 #else  /* !_MSC_VER */