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