Front page | perl.perl5.porters |
Postings from April 2000
[PATCH 5.6.0] fix for 'FATAL all' (was RE: lexical warnings bug? )
From:
paul.marquess
Date:
April 26, 2000 11:22
Subject:
[PATCH 5.6.0] fix for 'FATAL all' (was RE: lexical warnings bug? )
Message ID:
5104D4DBC598D211B5FE0000F8FE7EB207582E08@mbtlipnt02.btlabs.bt.co.uk
From: paul.marquess@bt.com [mailto:paul.marquess@bt.com]
> From: Tom Christiansen [mailto:tchrist@chthon.perl.com]
>
> > >Could you give an example of the usage of the code that illustrates the
> > >problem please Tom.
> >
> > Right, sorry. It was snipped from yesterday's pathedit program.
> >
> > #!/usr/bin/perl
> >
> > use warnings;
> > no warnings 'redefine';
> >
> > use Carp;
> >
> > my @names = qw(/tmp/foo /tmp/bar);
> > my $code = q{$a + $b};
> >
> > print "Trying compile with fatal warnings\n\n";
> > eval {
> > compile1($code);
> > pathedit() for @names;
> > };
> > warn if $@;
> >
> > print "\nTrying compile with sigwarn\n\n";
> > eval {
> > compile2($code);
> > pathedit() for @names;
> > };
> > warn if $@;
> >
> > sub compile1 {
> > my $op = shift;
> > *pathedit = eval qq{
> > sub () {
> > use warnings qw/FATAL all/; # XXX: does not work
> > $op;
> > }
> > } || do {
> > local $_ = $@;
> > s/at \(eval.*//s;
> > die "$0: can't compile perlexpr $op: $_\n";
> > }
> > }
> >
> > sub compile2 {
> > my $op = shift;
> > *pathedit = eval qq{
> > sub () {
> > local \$SIG{__WARN__} = sub {
> > local \$_ = "\@_";
> > s/at \\(eval.*//;
> > confess "FATAL WARNING: \$_";
> > };
> > $op;
> > }
> > } || do {
> > local $_ = $@;
> > s/at \(eval.*//s;
> > die "$0: can't compile perlexpr $op: $_\n";
> > }
> > }
> >
> > That produces this:
> >
> > Trying compile with fatal warnings
> >
> > Use of uninitialized value in addition (+) at (eval 1) line 4.
> > Use of uninitialized value in addition (+) at (eval 1) line 4.
> > Use of uninitialized value in addition (+) at (eval 1) line 4.
> > Use of uninitialized value in addition (+) at (eval 1) line 4.
> >
> > Trying compile with sigwarn
> >
> > FATAL WARNING: Use of uninitialized value in addition (+)
> > main::__ANON__('Use of uninitialized value in addition (+) at
> (eval 2) line 8.^J') called at (eval 2) line 8
> > main::__ANON__() called at /tmp/p line 21
> > require 0 called at /tmp/p line 19
> > ...caught at /tmp/p line 23.
> >
> > The question is: shouldn't the fatal warnings version also be, well,
> fatal?
>
> Indeed they should. The logic that processes "FATAL all" is broken. Expect
a
> patch in the next couple of days.
Here is a patch to fix the bug. Although it can apply over a fresh 5.6.0, it
should really be applied along with the last eval+warnings patch both
Sarathy and I posted.
Paul
begin 664 lex.patch.gz
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
%1-(I````
`
end
-
[PATCH 5.6.0] fix for 'FATAL all' (was RE: lexical warnings bug? )
by paul.marquess