This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
"" . open(my $fh,...) gave wrong warning
authorDavid Mitchell <davem@iabyn.com>
Mon, 15 Aug 2016 10:39:11 +0000 (11:39 +0100)
committerDavid Mitchell <davem@iabyn.com>
Mon, 15 Aug 2016 10:39:11 +0000 (11:39 +0100)
RT #128940

    $ perl -we 'print "" . open my $fh, "<", "no / such / file"'
    Use of uninitialized value $fh in concatenation (.) or string at -e line 1.
                           ^^^

sv.c
t/lib/warnings/9uninit

diff --git a/sv.c b/sv.c
index b345052..8991c12 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -16243,6 +16243,7 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
             */
             break;
        }
+       match = 1;
        goto do_op;
 
     /* ops where $_ may be an implicit arg */
index 7fbf442..5171941 100644 (file)
@@ -2180,3 +2180,9 @@ undef $SIG{__WARN__};
 EXPECT
 ok
 Use of uninitialized value $a[140688675223280] in string at - line 15.
+########
+# RT #128940
+use warnings 'uninitialized';
+my $x = "" . open my $fh, "<", "no / such / file";
+EXPECT
+Use of uninitialized value in concatenation (.) or string at - line 3.