diff -r 93996b0e07f2 Objects/dictobject.c --- a/Objects/dictobject.c Mon Mar 05 10:50:11 2012 +0100 +++ b/Objects/dictobject.c Mon Mar 05 17:31:16 2012 +0100 @@ -347,12 +347,9 @@ lookdict(PyDictObject *mp, PyObject *key return ep; } else { - /* The compare did major nasty stuff to the - * dict: start over. - * XXX A clever adversary could prevent this - * XXX from terminating. - */ - return lookdict(mp, key, hash); + PyErr_SetString(PyExc_RuntimeError, + "dictionary changed size during lookup"); + return NULL; } } freeslot = NULL; @@ -379,12 +376,9 @@ lookdict(PyDictObject *mp, PyObject *key return ep; } else { - /* The compare did major nasty stuff to the - * dict: start over. - * XXX A clever adversary could prevent this - * XXX from terminating. - */ - return lookdict(mp, key, hash); + PyErr_SetString(PyExc_RuntimeError, + "dictionary changed size during lookup"); + return NULL; } } else if (ep->me_key == dummy && freeslot == NULL)