From 80f638fe19f6d40c53792eebda2dfdecc82ad75e Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Wed, 3 Jun 2015 22:41:06 +0100
Subject: [PATCH] tests: Add test for recursive iternext stack overflow.

---
 tests/misc/recursive_iternext.py     | 33 ++++++++++++++++++++++++++++
 tests/misc/recursive_iternext.py.exp |  4 ++++
 2 files changed, 37 insertions(+)
 create mode 100644 tests/misc/recursive_iternext.py
 create mode 100644 tests/misc/recursive_iternext.py.exp

diff --git a/tests/misc/recursive_iternext.py b/tests/misc/recursive_iternext.py
new file mode 100644
index 000000000..ac3a17e93
--- /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 000000000..80d1488a3
--- /dev/null
+++ b/tests/misc/recursive_iternext.py.exp
@@ -0,0 +1,4 @@
+RuntimeError
+RuntimeError
+RuntimeError
+RuntimeError
-- 
GitLab