In perl.git, the branch blead has been updated

<https://perl5.git.perl.org/perl.git/commitdiff/2773b4f50f991900e38d33daace2b9c6a0902c6a?hp=256dda502eca71f547885c73901e8e8b42d47174>

- Log -----------------------------------------------------------------
commit 2773b4f50f991900e38d33daace2b9c6a0902c6a
Author: Tony Cook <t...@develop-help.com>
Date:   Thu Jul 4 15:02:46 2019 +1000

    Revert "postpone perl_parse() exit(0) bugfix"
    
    This reverts commit 857320cbf85e762add18885ae8a197b5e0c21b69,
    re-instating the [perl #2754] fix, which was reverted in late
    2017 to allow Module::Install based distributions to update or
    re-work per [perl #132577].
    
    # Conflicts:
    #   t/op/blocks.t

-----------------------------------------------------------------------

Summary of changes:
 perl.c        | 27 ++++++++-------------------
 t/op/blocks.t | 12 ++++++------
 2 files changed, 14 insertions(+), 25 deletions(-)

diff --git a/perl.c b/perl.c
index e642f2e76d..a84a0a955b 100644
--- a/perl.c
+++ b/perl.c
@@ -1624,16 +1624,13 @@ For historical reasons, the non-zero return value also 
attempts to
 be a suitable value to pass to the C library function C<exit> (or to
 return from C<main>), to serve as an exit code indicating the nature
 of the way initialisation terminated.  However, this isn't portable,
-due to differing exit code conventions.  A historical bug is preserved
-for the time being: if the Perl built-in C<exit> is called during this
-function's execution, with a type of exit entailing a zero exit code
-under the host operating system's conventions, then this function
-returns zero rather than a non-zero value.  This bug, [perl #2754],
-leads to C<perl_run> being called (and therefore C<INIT> blocks and the
-main program running) despite a call to C<exit>.  It has been preserved
-because a popular module-installing module has come to rely on it and
-needs time to be fixed.  This issue is [perl #132577], and the original
-bug is due to be fixed in Perl 5.30.
+due to differing exit code conventions.  An attempt is made to return
+an exit code of the type required by the host operating system, but
+because it is constrained to be non-zero, it is not necessarily possible
+to indicate every type of exit.  It is only reliable on Unix, where a
+zero exit code can be augmented with a set bit that will be ignored.
+In any case, this function is not the correct place to acquire an exit
+code: one should get that from L</perl_destruct>.
 
 =cut
 */
@@ -1842,15 +1839,7 @@ perl_parse(pTHXx_ XSINIT_t xsinit, int argc, char 
**argv, char **env)
            call_list(oldscope, PL_checkav);
        }
        ret = STATUS_EXIT;
-       if (ret == 0) {
-           /*
-            * At this point we should do
-            *     ret = 0x100;
-            * to avoid [perl #2754], but that bugfix has been postponed
-            * because of the Module::Install breakage it causes
-            * [perl #132577].
-            */
-       }
+       if (ret == 0) ret = 0x100;
        break;
     case 3:
        PerlIO_printf(Perl_error_log, "panic: top_env\n");
diff --git a/t/op/blocks.t b/t/op/blocks.t
index 1fb369a1a1..ea6ca4d144 100644
--- a/t/op/blocks.t
+++ b/t/op/blocks.t
@@ -167,23 +167,23 @@ SKIP: {
     skip "VMS doesn't have the perl #2754 bug", 3 if $^O eq 'VMS';
     fresh_perl_is(
         "$testblocks BEGIN { exit 0; }",
-        "begin\nunitcheck\ncheck\ninit\nend",
+        "begin\nunitcheck\ncheck\nend",
         {},
-        "BEGIN{exit 0} doesn't exit yet"
+        "BEGIN{exit 0} should exit"
     );
 
     fresh_perl_is(
         "$testblocks UNITCHECK { exit 0; }",
-        "begin\nunitcheck\ncheck\ninit\nmain\nend",
+        "begin\nunitcheck\ncheck\nend",
         {},
-        "UNITCHECK{exit 0} doesn't exit yet"
+        "UNITCHECK{exit 0} should exit"
     );
 
     fresh_perl_is(
         "$testblocks CHECK { exit 0; }",
-        "begin\nunitcheck\ncheck\ninit\nmain\nend",
+        "begin\nunitcheck\ncheck\nend",
         {},
-        "CHECK{exit 0} doesn't exit yet"
+        "CHECK{exit 0} should exit"
     );
 }
 

-- 
Perl5 Master Repository

Reply via email to