diff Objects/typeobject.c @ 50755:c99ce0164699

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. ........
author Amaury Forgeot d'Arc <amauryfa@gmail.com>
date Mon, 12 Jan 2009 23:58:21 +0000
parents 0496963fcfe9
children df3fa40fdbed
line wrap: on
line diff
--- a/Objects/typeobject.c	Mon Jan 12 20:49:19 2009 +0000
+++ b/Objects/typeobject.c	Mon Jan 12 23:58:21 2009 +0000
@@ -5630,8 +5630,12 @@
 	}
 	do {
 		descr = _PyType_Lookup(type, p->name_strobj);
-		if (descr == NULL)
+		if (descr == NULL) {
+			if (ptr == (void**)&type->tp_iternext) {
+				specific = _PyObject_NextNotImplemented;
+			}
 			continue;
+		}
 		if (Py_TYPE(descr) == &PyWrapperDescr_Type) {
 			void **tptr = resolve_slotdups(type, p->name_strobj);
 			if (tptr == NULL || tptr == ptr)