diff options
Diffstat (limited to 'win32/perlhost.h')
-rw-r--r-- | win32/perlhost.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/win32/perlhost.h b/win32/perlhost.h index 5e89f854f8..7464c7a99f 100644 --- a/win32/perlhost.h +++ b/win32/perlhost.h @@ -1771,9 +1771,14 @@ restart: CALLRUNOPS(aTHX); /* We may have additional unclosed scopes if fork() was called * from within a BEGIN block. See perlfork.pod for more details. + * We cannot clean up these other scopes because they belong to a + * different interpreter, but we also cannot leave PL_scopestack_ix + * dangling because that can trigger an assertion in perl_destruct(). */ - while (PL_scopestack_ix > oldscope) - LEAVE; + if (PL_scopestack_ix > oldscope) { + PL_scopestack[oldscope-1] = PL_scopestack[PL_scopestack_ix-1]; + PL_scopestack_ix = oldscope; + } status = 0; break; case 2: |