1# This tests that recursion with iternext doesn't lead to segfault. 2try: 3 enumerate 4 filter 5 map 6 max 7 zip 8except: 9 print("SKIP") 10 raise SystemExit 11 12# We need to pick an N that is large enough to hit the recursion 13# limit, but not too large that we run out of heap memory. 14try: 15 # large stack/heap, eg unix 16 [0] * 80000 17 N = 5000 18except: 19 try: 20 # medium, eg pyboard 21 [0] * 10000 22 N = 1000 23 except: 24 # small, eg esp8266 25 N = 100 26 27try: 28 x = (1, 2) 29 for i in range(N): 30 x = enumerate(x) 31 tuple(x) 32except RuntimeError: 33 print("RuntimeError") 34 35try: 36 x = (1, 2) 37 for i in range(N): 38 x = filter(None, x) 39 tuple(x) 40except RuntimeError: 41 print("RuntimeError") 42 43try: 44 x = (1, 2) 45 for i in range(N): 46 x = map(max, x, ()) 47 tuple(x) 48except RuntimeError: 49 print("RuntimeError") 50 51try: 52 x = (1, 2) 53 for i in range(N): 54 x = zip(x) 55 tuple(x) 56except RuntimeError: 57 print("RuntimeError") 58