util.c:report_wrongway_fh: Report name w/initial null
authorFather Chrysostomos <sprout@cpan.org>
Fri, 25 May 2012 05:41:53 +0000 (22:41 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Thu, 7 Jun 2012 15:18:52 +0000 (08:18 -0700)
In the error message, we shouldn’t omit a handle whose name begins
with "\0", but, rather, a handle whose name has no length to it.

t/lib/warnings/pp_hot
util.c

index 9ef68e0..2d4e921 100644 (file)
@@ -90,6 +90,24 @@ Filehandle FH opened only for input at - line 19.
 Filehandle FOO opened only for input at - line 20.
 ########
 # pp_hot.c [pp_print]
+$SIG{__WARN__} = sub { warn $_[0] =~ s/\0/\\0/rug; };
+use warnings 'io' ;
+my $file = "./xcv" ; unlink $file ;
+open (FH, ">$file") or die $! ;
+close FH or die $! ;
+die "There is no file $file" unless -f $file ;
+open ("a\0b", "<$file") or die $! ;
+print {"a\0b"} "anc" ;
+open ("\0b", "<$file") or die $! ;
+print {"\0b"} "anc" ;
+close "a\0b" or die $! ;
+close "\0b" or die $! ;
+unlink $file ;
+EXPECT
+Filehandle a\0b opened only for input at - line 9.
+Filehandle \0b opened only for input at - line 11.
+########
+# pp_hot.c [pp_print]
 use warnings 'closed' ;
 close STDIN ;
 print STDIN "anc";
diff --git a/util.c b/util.c
index 5fbf9b2..ac7dfbc 100644 (file)
--- a/util.c
+++ b/util.c
@@ -3722,7 +3722,7 @@ Perl_report_wrongway_fh(pTHX_ const GV *gv, const char have)
                 : NULL;
        const char * const direction = have == '>' ? "out" : "in";
 
-       if (name && *HEK_KEY(name))
+       if (name && HEK_LEN(name))
            Perl_warner(aTHX_ packWARN(WARN_IO),
                        "Filehandle %"HEKf" opened only for %sput",
                        name, direction);