Bug#700356: libperl-critic-perl: eval return value checking policy now obsolete

Russ Allbery rra at debian.org
Tue Feb 12 00:41:51 UTC 2013


Package: libperl-critic-perl
Version: 1.118-1
Severity: normal

The ErrorHandling::RequireCheckingReturnValueOfEval policy is, I believe,
now thankfully obsolete since that bug was fixed in Perl in 5.14.  It may
still be of interest to people who want to support older versions of Perl,
but this should at least be noted in its documentation, and I'm not sure
that it still belongs in the default set for jessie.

perl5140delta:

Exception Handling
    To make them more reliable and consistent, several changes have been
    made to how "die", "warn", and $@ behave.

    ·   When an exception is thrown inside an "eval", the exception is no
        longer at risk of being clobbered by destructor code running during
        unwinding.  Previously, the exception was written into $@ early in
        the throwing process, and would be overwritten if "eval" was used
        internally in the destructor for an object that had to be freed
        while exiting from the outer "eval".  Now the exception is written
        into $@ last thing before exiting the outer "eval", so the code
        running immediately thereafter can rely on the value in $@
        correctly corresponding to that "eval".  ($@ is still also set
        before exiting the "eval", for the sake of destructors that rely on
        this.)

        Likewise, a "local $@" inside an "eval" no longer clobbers any
        exception thrown in its scope.  Previously, the restoration of $@
        upon unwinding would overwrite any exception being thrown.  Now the
        exception gets to the "eval" anyway.  So "local $@" is safe before
        a "die".

        Exceptions thrown from object destructors no longer modify the $@
        of the surrounding context.  (If the surrounding context was
        exception unwinding, this used to be another way to clobber the
        exception being thrown.)  Previously such an exception was
        sometimes emitted as a warning, and then either was string-appended
        to the surrounding $@ or completely replaced the surrounding $@,
        depending on whether that exception and the surrounding $@ were
        strings or objects.  Now, an exception in this situation is always
        emitted as a warning, leaving the surrounding $@ untouched.  In
        addition to object destructors, this also affects any function call
        run by XS code using the "G_KEEPERR" flag.

-- System Information:
Debian Release: 7.0
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 3.2.0-4-686-pae (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libperl-critic-perl depends on:
ii  libb-keywords-perl       1.12-1
ii  libconfig-tiny-perl      2.14-1
ii  libemail-address-perl    1.895-1
ii  libexception-class-perl  1.32-1
ii  libfile-homedir-perl     0.99-1
ii  libfile-which-perl       1.09-1
ii  libio-string-perl        1.08-2
ii  liblist-moreutils-perl   0.33-1+b1
ii  libpod-spell-perl        1.01-2
ii  libppi-perl              1.215-1
ii  libppix-regexp-perl      0.028-1
ii  libppix-utilities-perl   1.001000-1
ii  libreadonly-perl         1.03-4
ii  libreadonly-xs-perl      1.04-2+b3
ii  libstring-format-perl    1.16-1
ii  libtask-weaken-perl      1.03-1
ii  perl                     5.14.2-17
ii  perltidy                 20101217-1

libperl-critic-perl recommends no packages.

libperl-critic-perl suggests no packages.

-- no debconf information



More information about the pkg-perl-maintainers mailing list