diff options
author | Amaury Forgeot d'Arc <amauryfa@gmail.com> | 2009-01-12 23:58:21 (GMT) |
---|---|---|
committer | Amaury Forgeot d'Arc <amauryfa@gmail.com> | 2009-01-12 23:58:21 (GMT) |
commit | f343e01c170b3f63eafac4568d905be91b676254 (patch) | |
tree | 1c3aa5615718e7ccc70be59a5fbd72b7497869ae /Objects/object.c | |
parent | e5e298f8755c475e78f8cfc71ee0ea03c6674406 (diff) | |
download | cpython-f343e01c170b3f63eafac4568d905be91b676254.zip cpython-f343e01c170b3f63eafac4568d905be91b676254.tar.gz cpython-f343e01c170b3f63eafac4568d905be91b676254.tar.bz2 |
Merged revisions 68560 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68560 | amaury.forgeotdarc | 2009-01-13 00:36:55 +0100 (mar., 13 janv. 2009) | 6 lines
#3720: Interpreter crashes when an evil iterator removes its own next function.
Now the slot is filled with a function that always raises.
Will not backport: extensions compiled with 2.6.x would not run on 2.6.0.
........
Diffstat (limited to 'Objects/object.c')
-rw-r--r-- | Objects/object.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Objects/object.c b/Objects/object.c index 15d26a7..00657de 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -1020,6 +1020,20 @@ PyObject_SelfIter(PyObject *obj) return obj; } +/* Helper used when the __next__ method is removed from a type: + tp_iternext is never NULL and can be safely called without checking + on every iteration. + */ + +PyObject * +_PyObject_NextNotImplemented(PyObject *self) +{ + PyErr_Format(PyExc_TypeError, + "'%.200s' object is not iterable", + Py_TYPE(self)->tp_name); + return NULL; +} + /* Generic GetAttr functions - put these in your tp_[gs]etattro slot */ PyObject * |