diff options
author | Damien George <damien.p.george@gmail.com> | 2015-06-03 22:41:06 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-06-03 22:41:06 +0100 |
commit | 80f638fe19f6d40c53792eebda2dfdecc82ad75e (patch) | |
tree | f7d219a3c0e57044063a2623d136234b3f216f0c | |
parent | 953c23b1bcc732ccb3a6e4798add9b1f2fc0f444 (diff) | |
download | micropython-80f638fe19f6d40c53792eebda2dfdecc82ad75e.tar.gz micropython-80f638fe19f6d40c53792eebda2dfdecc82ad75e.zip |
tests: Add test for recursive iternext stack overflow.
-rw-r--r-- | tests/misc/recursive_iternext.py | 33 | ||||
-rw-r--r-- | tests/misc/recursive_iternext.py.exp | 4 |
2 files changed, 37 insertions, 0 deletions
diff --git a/tests/misc/recursive_iternext.py b/tests/misc/recursive_iternext.py new file mode 100644 index 0000000000..ac3a17e93b --- /dev/null +++ b/tests/misc/recursive_iternext.py @@ -0,0 +1,33 @@ +# This tests that recursion with iternext doesn't lead to segfault. + +try: + x = (1, 2) + for i in range(1000): + x = enumerate(x) + tuple(x) +except RuntimeError: + print("RuntimeError") + +try: + x = (1, 2) + for i in range(1000): + x = filter(None, x) + tuple(x) +except RuntimeError: + print("RuntimeError") + +try: + x = (1, 2) + for i in range(1000): + x = map(max, x, ()) + tuple(x) +except RuntimeError: + print("RuntimeError") + +try: + x = (1, 2) + for i in range(1000): + x = zip(x) + tuple(x) +except RuntimeError: + print("RuntimeError") diff --git a/tests/misc/recursive_iternext.py.exp b/tests/misc/recursive_iternext.py.exp new file mode 100644 index 0000000000..80d1488a37 --- /dev/null +++ b/tests/misc/recursive_iternext.py.exp @@ -0,0 +1,4 @@ +RuntimeError +RuntimeError +RuntimeError +RuntimeError |