[perl #36875] [PATCH] scalar reverse undef does not warn (was: Certain string handl...
Bram [Sat, 24 May 2008 12:34:22 +0000 (05:34 -0700)]
From: "Bram via RT" <perlbug-followup@perl.org>
Message-ID: <rt-3.6.HEAD-11257-1211657660-1814.36875-15-0@perl.org>

p4raw-id: //depot/perl@33981

pp.c
t/lib/warnings/9uninit

diff --git a/pp.c b/pp.c
index d940d10..10dbb06 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -4604,13 +4604,18 @@ PP(pp_reverse)
        SvUTF8_off(TARG);                               /* decontaminate */
        if (SP - MARK > 1)
            do_join(TARG, &PL_sv_no, MARK, SP);
-       else
+       else {
            sv_setsv(TARG, (SP > MARK)
                    ? *SP
                    : (padoff_du = find_rundefsvoffset(),
                        (padoff_du == NOT_IN_PAD
                         || PAD_COMPNAME_FLAGS_isOUR(padoff_du))
                        ? DEFSV : PAD_SVl(padoff_du)));
+
+           if (! SvOK(TARG) && ckWARN(WARN_UNINITIALIZED))
+               report_uninit(TARG);
+       }
+
        up = SvPV_force(TARG, len);
        if (len > 1) {
            if (DO_UTF8(TARG)) {        /* first reverse each character */
index 0a984e2..16ce1b8 100644 (file)
@@ -1400,3 +1400,14 @@ my $b
 EXPECT
 Use of uninitialized value $undef in addition (+) at - line 4.
 Use of uninitialized value $undef in addition (+) at - line 7.
+########
+use warnings 'uninitialized';
+my ($r1, $r2);
+$_ = undef;
+$v = reverse;
+$v = reverse $r1;
+$v = reverse "abc", $r2, "def";
+EXPECT
+Use of uninitialized value in reverse at - line 4.
+Use of uninitialized value $r1 in reverse at - line 5.
+Use of uninitialized value $r2 in reverse at - line 6.