X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/1144115d25e28286dc02b44859da121ea1b93f1c..1cb985b013ea71b82afbc114ed06f94d451f5e04:/win32/perlhost.h diff --git a/win32/perlhost.h b/win32/perlhost.h index 5e89f85..7464c7a 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: