Correctly escape UTF-8 in hash keys in uninitialized warnings
authorRafael Garcia-Suarez <rgs@consttype.org>
Wed, 25 Jan 2012 11:45:25 +0000 (12:45 +0100)
committerRafael Garcia-Suarez <rgs@consttype.org>
Wed, 25 Jan 2012 11:45:25 +0000 (12:45 +0100)
sv.c
t/lib/warnings/9uninit

diff --git a/sv.c b/sv.c
index 2dce137..be5aec8 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -13895,7 +13895,8 @@ Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ,
        SV * const sv = newSV(0);
        *SvPVX(name) = '$';
        Perl_sv_catpvf(aTHX_ name, "{%s}",
-           pv_display(sv,SvPVX_const(keyname), SvCUR(keyname), 0, 32));
+           pv_pretty(sv, SvPVX_const(keyname), SvCUR(keyname), 32, NULL, NULL,
+                   PERL_PV_PRETTY_DUMP | PERL_PV_ESCAPE_UNI_DETECT ));
        SvREFCNT_dec(sv);
     }
     else if (subscript_type == FUV_SUBSCRIPT_ARRAY) {
index 0d2d841..37e24e7 100644 (file)
@@ -1189,10 +1189,10 @@ use warnings 'uninitialized';
 my ($v);
 
 # check hash key is sanitised
-my %h = ("\0011\002\r\n\t\f\"\\abcdefghijklmnopqrstuvwxyz", undef);
+my %h = ("\0011\002\r\n\t\f\"\\\x{1234}abcdefghijklmnopqrstuvwxyz", undef);
 $v = join '', %h;
 EXPECT
-Use of uninitialized value $h{"\0011\2\r\n\t\f\"\\abcdefghijklm"...} in join or string at - line 6.
+Use of uninitialized value $h{"\0011\2\r\n\t\f\"\\\x{1234}abcde"...} in join or string at - line 6.
 ########
 use warnings 'uninitialized';
 my ($m1, $v);