summaryrefslogtreecommitdiffstats
path: root/Lib/test/crashers
diff options
context:
space:
mode:
authorAmaury Forgeot d'Arc <amauryfa@gmail.com>2009-01-12 23:58:21 (GMT)
committerAmaury Forgeot d'Arc <amauryfa@gmail.com>2009-01-12 23:58:21 (GMT)
commitf343e01c170b3f63eafac4568d905be91b676254 (patch)
tree1c3aa5615718e7ccc70be59a5fbd72b7497869ae /Lib/test/crashers
parente5e298f8755c475e78f8cfc71ee0ea03c6674406 (diff)
downloadcpython-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 'Lib/test/crashers')
-rw-r--r--Lib/test/crashers/iter.py53
1 files changed, 0 insertions, 53 deletions
diff --git a/Lib/test/crashers/iter.py b/Lib/test/crashers/iter.py
deleted file mode 100644
index 0d8540e..0000000
--- a/Lib/test/crashers/iter.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# Calls to PyIter_Next, or direct calls to tp_iternext, on an object
-# which might no longer be an iterable because its 'next' method was
-# removed. These are all variants of Issue3720.
-
-"""
-Run this script with an argument between 1 and <N> to test for
-different crashes.
-"""
-N = 8
-
-import sys
-
-class Foo(object):
- def __iter__(self):
- return self
- def next(self):
- del Foo.next
- return (1, 2)
-
-def case1():
- list(enumerate(Foo()))
-
-def case2():
- x, y = Foo()
-
-def case3():
- filter(None, Foo())
-
-def case4():
- map(None, Foo(), Foo())
-
-def case5():
- max(Foo())
-
-def case6():
- sum(Foo(), ())
-
-def case7():
- dict(Foo())
-
-def case8():
- sys.stdout.writelines(Foo())
-
-# etc...
-
-
-if __name__ == '__main__':
- if len(sys.argv) < 2:
- print(__doc__.replace('<N>', str(N)))
- else:
- n = int(sys.argv[1])
- func = globals()['case%d' % n]
- func()