summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArmin Rigo <arigo@tunes.org>2006-08-09 14:55:26 (GMT)
committerArmin Rigo <arigo@tunes.org>2006-08-09 14:55:26 (GMT)
commit51fc8c456e9bbb97f42c6990e40019cd4a5eb615 (patch)
treec687e90ad2a80154f4b2d2b39c07adc51b19260b
parent98c048041d91dc4694115e29b40182f89a3b9f1d (diff)
downloadcpython-51fc8c456e9bbb97f42c6990e40019cd4a5eb615.zip
cpython-51fc8c456e9bbb97f42c6990e40019cd4a5eb615.tar.gz
cpython-51fc8c456e9bbb97f42c6990e40019cd4a5eb615.tar.bz2
Fix and test for an infinite C recursion.
-rw-r--r--Lib/test/test_builtin.py4
-rw-r--r--Objects/typeobject.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index 26bfe87..ca7a8f3 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -649,6 +649,10 @@ class BuiltinTest(unittest.TestCase):
def __hash__(self):
return 2**100
self.assertEquals(type(hash(Y())), int)
+ class Z(long):
+ def __hash__(self):
+ return self
+ self.assertEquals(hash(Z(42)), hash(42L))
def test_hex(self):
self.assertEqual(hex(16), '0x10')
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 652009b..485d2bb 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -4560,7 +4560,7 @@ slot_tp_hash(PyObject *self)
if (res == NULL)
return -1;
if (PyLong_Check(res))
- h = res->ob_type->tp_hash(res);
+ h = PyLong_Type.tp_hash(res);
else
h = PyInt_AsLong(res);
Py_DECREF(res);