summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2018-05-09 10:54:55 +0100
committerDavid Mitchell <davem@iabyn.com>2018-05-11 08:37:20 +0100
commit64a9c780950becebc7326a31d067801ec9b187a2 (patch)
tree861a1fcfd3643948f372bf91d956e0f5b0b95c57
parent6b12a45f5c460336891492f0e67595db5af4983d (diff)
downloadperl-64a9c780950becebc7326a31d067801ec9b187a2.tar.gz
Revert "set PERL_EXIT_DESTRUCT_END in all embeddings"
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.
-rw-r--r--NetWare/interface.c1
-rw-r--r--NetWare/interface.cpp1
-rw-r--r--os2/perlrexx.c1
-rw-r--r--symbian/PerlBase.cpp4
-rw-r--r--t/op/blocks.t4
-rw-r--r--win32/perllib.c1
6 files changed, 4 insertions, 8 deletions
diff --git a/NetWare/interface.c b/NetWare/interface.c
index b943d21147..1d298854c9 100644
--- a/NetWare/interface.c
+++ b/NetWare/interface.c
@@ -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;
}
diff --git a/NetWare/interface.cpp b/NetWare/interface.cpp
index 7fe027933c..b08d6c249e 100644
--- a/NetWare/interface.cpp
+++ b/NetWare/interface.cpp
@@ -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;
}
diff --git a/os2/perlrexx.c b/os2/perlrexx.c
index b9f6789677..18d655137d 100644
--- a/os2/perlrexx.c
+++ b/os2/perlrexx.c
@@ -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)
diff --git a/symbian/PerlBase.cpp b/symbian/PerlBase.cpp
index 88810bfd12..9312abeb55 100644
--- a/symbian/PerlBase.cpp
+++ b/symbian/PerlBase.cpp
@@ -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"),
diff --git a/t/op/blocks.t b/t/op/blocks.t
index 420a1344a7..1fb369a1a1 100644
--- a/t/op/blocks.t
+++ b/t/op/blocks.t
@@ -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",
diff --git a/win32/perllib.c b/win32/perllib.c
index 25b20156ec..246f67aa1a 100644
--- a/win32/perllib.c
+++ b/win32/perllib.c
@@ -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().