set PERL_EXIT_DESTRUCT_END in all embeddings
authorZefram <zefram@fysh.org>
Fri, 22 Dec 2017 10:07:47 +0000 (10:07 +0000)
committerZefram <zefram@fysh.org>
Fri, 22 Dec 2017 10:07:47 +0000 (10:07 +0000)
The new tests in commit 503bc07b4b9e34ed04a725b2bc8faec1ae0f3be2
showed up platform differences in whether END blocks get run.
Set PERL_EXIT_DESTRUCT_END in all embeddings to make this consistent.

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

index 1d29885..b943d21 100644 (file)
@@ -62,6 +62,7 @@ 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 b08d6c2..7fe0279 100644 (file)
@@ -53,6 +53,7 @@ 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 18d6551..b9f6789 100644 (file)
@@ -74,6 +74,7 @@ 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 9312abe..88810bf 100644 (file)
@@ -141,6 +141,10 @@ 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 246f67a..25b2015 100644 (file)
@@ -230,6 +230,7 @@ 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().