Mention all variables in $undef..$undef warnings
authorFather Chrysostomos <sprout@cpan.org>
Thu, 13 Oct 2011 16:52:00 +0000 (09:52 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Thu, 13 Oct 2011 16:52:00 +0000 (09:52 -0700)
Commit c774086b8 made this:

$ ./miniperl -lwe '()=my $undef1..my $undef2'
Use of uninitialized value in range (or flop) at -e line 1.
Use of uninitialized value in range (or flop) at -e line 1.

become this:

$ ./miniperl -lwe '()=my $undef1..my $undef2'
Use of uninitialized value $undef2 in range (or flop) at -e line 1.
Use of uninitialized value in range (or flop) at -e line 1.

which was slightly better.  This commit finishes the job:

$ ./miniperl -lwe '()=my $undef1..my $undef2'
Use of uninitialized value $undef1 in range (or flop) at -e line 1.
Use of uninitialized value $undef2 in range (or flop) at -e line 1.

pp_ctl.c
t/lib/warnings/9uninit

index 60d4b0e..d15f99b 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1330,12 +1330,11 @@ PP(pp_flop)
            }
        }
        else {
-           STRLEN len;
+           STRLEN len, llen;
+           const char * const lpv = SvPV_nomg_const(left, llen);
            const char * const tmps = SvPV_nomg_const(right, len);
 
-           SV *sv = sv_newmortal();
-           sv_setsv_nomg(sv, left);
-           SvPV_force_nolen(sv);
+           SV *sv = newSVpvn_flags(lpv, llen, SvUTF8(left)|SVs_TEMP);
            while (!SvNIOKp(sv) && SvCUR(sv) <= len) {
                XPUSHs(sv);
                if (strEQ(SvPVX_const(sv),tmps))
index b79fc01..0f0f465 100644 (file)
@@ -530,12 +530,12 @@ $v = ($m1 ... $m2);
 EXPECT
 Use of uninitialized value $m1 in range (or flop) at - line 7.
 Use of uninitialized value $m2 in range (or flop) at - line 8.
+Use of uninitialized value $m1 in range (or flop) at - line 9.
 Use of uninitialized value $m2 in range (or flop) at - line 9.
-Use of uninitialized value in range (or flop) at - line 9.
 Use of uninitialized value $m1 in range (or flop) at - line 12.
 Use of uninitialized value $m2 in range (or flop) at - line 13.
+Use of uninitialized value $m1 in range (or flop) at - line 14.
 Use of uninitialized value $m2 in range (or flop) at - line 14.
-Use of uninitialized value in range (or flop) at - line 14.
 ########
 use warnings 'uninitialized';
 my ($m1, $v);