Revert "set PERL_EXIT_DESTRUCT_END in all embeddings"
authorDavid Mitchell <davem@iabyn.com>
Wed, 9 May 2018 09:54:55 +0000 (10:54 +0100)
committerDavid Mitchell <davem@iabyn.com>
Fri, 11 May 2018 07:37:20 +0000 (08:37 +0100)
This reverts commit 8e920bd341e241f50a74dbf8aa343319f204e200.
Also skip the tests in t/op/blocks.t

RT #132863

8e920bd341 sets the PERL_EXIT_DESTRUCT_END flag on non-UNIXy platforms,
like is already done on UNIXy platforms.  This makes things like
BEGIN { exit(1) } call END blocks on those platforms (like they already
do on UNIX).

But it caused problems with win32 pseudo-forks, so revert for 5.28
and re-address the issues sometime later.

NetWare/interface.c
NetWare/interface.cpp
os2/perlrexx.c
symbian/PerlBase.cpp
t/op/blocks.t
win32/perllib.c

index b943d21..1d29885 100644 (file)
@@ -62,7 +62,6 @@ ClsPerlHost::PerlCreate(PerlInterpreter *my_perl)
 /*     if (!(my_perl = perl_alloc()))          // Allocate memory for Perl.
                return (1);*/
     perl_construct(my_perl);
-    PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
 
        return 1;
 }
index 7fe0279..b08d6c2 100644 (file)
@@ -53,7 +53,6 @@ ClsPerlHost::PerlCreate(PerlInterpreter *my_perl)
 /*     if (!(my_perl = perl_alloc()))          // Allocate memory for Perl.
                return (1);*/
     perl_construct(my_perl);
-    PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
 
        return 1;
 }
index b9f6789..18d6551 100644 (file)
@@ -74,7 +74,6 @@ init_perl(int doparse)
        if (!my_perl)
            return 0;
        perl_construct(my_perl);
-       PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
        PL_perl_destruct_level = 1;
     }
     if (!doparse)
index 88810bf..9312abe 100644 (file)
@@ -141,10 +141,6 @@ void CPerlBase::ConstructL()
     User::LeaveIfNull(iPerl);
     iState = EPerlAllocated;
     perl_construct(iPerl); // returns void
-    {
-       PerlInterpreter *my_perl = iPerl;
-       PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
-    }
     if (!iStdioInitFunc) {
         iConsole =
           Console::NewL(_L("Perl Console"),
index 420a134..1fb369a 100644 (file)
@@ -189,6 +189,10 @@ SKIP: {
 
 
 SKIP: {
+    if ($^O =~ /^(MSWin32|NetWare|os2)$/) {
+        skip "non_UNIX plafforms and PERL_EXIT_DESTRUCT_END (RT #132863)", 6;
+    }
+
     fresh_perl_is(
         "$testblocks BEGIN { exit 1; }",
         "begin\nunitcheck\ncheck\nend",
index 25b2015..246f67a 100644 (file)
@@ -230,7 +230,6 @@ RunPerl(int argc, char **argv, char **env)
     if (!(my_perl = perl_alloc()))
        return (1);
     perl_construct(my_perl);
-    PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
     PL_perl_destruct_level = 0;
 
     /* PERL_SYS_INIT() may update the environment, e.g. via ansify_path().