python-goto
python-goto copied to clipboard
breaking from inner loop to the outer corrupts loop variable
Code to reproduce:
from goto import with_goto
content = ["ab", "cd"]
prefix = ['a', 'b']
@with_goto
def test():
for a in content:
print(f"1: {a}")
for p in prefix:
if a.startswith(p):
print(f"2: {a}")
goto .end
label .end
print(f"3: {a}")
Expected output for the test() call:
1: ab
2: ab
3: ab
1: ab
3: ab
Actual output:
1: ab
2: ab
3: ab
1: b
2: b
3: b
Version:
python: Python 3.9.7 OS: windows x64
Some thoughts: I believe that at some point the stack become corrupted and inner loop iterations are written to the outer loop variable.