diff --git a/Lib/test/test_getargs2.py b/Lib/test/test_getargs2.py
index d8f6309..1918386 100644
--- a/Lib/test/test_getargs2.py
+++ b/Lib/test/test_getargs2.py
@@ -63,10 +63,6 @@
     def __int__(self):
         return 99
 
-class InvalidLongAsString:
-    def __int__(self):
-        return 'foobar'
-
 class Unsigned_TestCase(unittest.TestCase):
     def test_b(self):
         from _testcapi import getargs_b
@@ -203,7 +199,6 @@
         self.failUnlessEqual(42, getargs_n(42))
         self.assertRaises(OverflowError, getargs_n, VERY_LARGE)
 
-        self.assertRaises(TypeError, getargs_n, InvalidLongAsString())
 
 class LongLong_TestCase(unittest.TestCase):
     def test_L(self):
diff --git a/Objects/abstract.c b/Objects/abstract.c
index 684b0b4..dac80d9 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -1220,7 +1220,6 @@
 PyObject *
 PyNumber_Index(PyObject *item)
 {
-	PyNumberMethods *m;
 	PyObject *result = NULL;
 	if (item == NULL)
 		return null_error();
@@ -1228,9 +1227,8 @@
 		Py_INCREF(item);
 		return item;
 	}
-	m = item->ob_type->tp_as_number;
 	if (PyIndex_Check(item)) {
-		result = m->nb_index(item);
+		result = item->ob_type->tp_as_number->nb_index(item);
 		if (result && !PyLong_Check(result)) {
 			PyErr_Format(PyExc_TypeError,
 				     "__index__ returned non-int "
@@ -1240,17 +1238,7 @@
 			return NULL;
 		}
 	}
-	else if (m && m->nb_int != NULL && m->nb_float == NULL) {
-		result = m->nb_int(item);
-		if (result && !PyLong_Check(result)) {
-			PyErr_Format(PyExc_TypeError,
-				     "__int__ returned non-int "
-				     "(type %.200s)",
-				     result->ob_type->tp_name);
-			Py_DECREF(result);
-			return NULL;
-		}
-	} else {
+	else {
 		PyErr_Format(PyExc_TypeError,
 			     "'%.200s' object cannot be interpreted "
 			     "as an integer", item->ob_type->tp_name);
diff --git a/Python/getargs.c b/Python/getargs.c
index 960c68c..1370e09 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -663,6 +663,7 @@
 	}
 
 	case 'n': /* Py_ssize_t */
+#if SIZEOF_SIZE_T != SIZEOF_LONG
 	{
 		PyObject *iobj;
 		Py_ssize_t *p = va_arg(*p_va, Py_ssize_t *);
@@ -671,13 +672,14 @@
 			return converterr("integer<n>", arg, msgbuf, bufsize);
 		iobj = PyNumber_Index(arg);
 		if (iobj != NULL)
-			ival = PyLong_AsSsize_t(iobj);
+			ival = PyLong_AsSsize_t(arg);
 		if (ival == -1 && PyErr_Occurred())
 			return converterr("integer<n>", arg, msgbuf, bufsize);
 		*p = ival;
 		break;
 	}
-
+#endif
+	/* Fall through from 'n' to 'l' if Py_ssize_t is int */
 	case 'l': {/* long int */
 		long *p = va_arg(*p_va, long *);
 		long ival;
