utf8 variable names scrambled in error messages
Adrian M. Enache [Thu, 21 Aug 2003 21:17:26 +0000 (00:17 +0300)]
Message-ID: <20030821181726.GA1241@ratsnest.hole>

p4raw-id: //depot/perl@20805

gv.c
t/op/die.t

diff --git a/gv.c b/gv.c
index 8a9b803..2fe604b 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -761,12 +761,15 @@ Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, I32 sv_type)
 
     if (!stash) {
        if (add) {
-           qerror(Perl_mess(aTHX_
+           register SV *err = Perl_mess(aTHX_
                 "Global symbol \"%s%s\" requires explicit package name",
                 (sv_type == SVt_PV ? "$"
                  : sv_type == SVt_PVAV ? "@"
                  : sv_type == SVt_PVHV ? "%"
-                 : ""), name));
+                 : ""), name);
+           if (USE_UTF8_IN_NAMES)
+               SvUTF8_on(err);
+           qerror(err);
            stash = GvHV(gv_fetchpv("<none>::", GV_ADDMULTI, SVt_PVHV));
        }
        else
index e9387a2..6f62afb 100755 (executable)
@@ -1,6 +1,6 @@
 #!./perl
 
-print "1..13\n";
+print "1..14\n";
 
 $SIG{__DIE__} = sub { print ref($_[0]) ? ("ok ",$_[0]->[0]++,"\n") : @_ } ;
 
@@ -57,4 +57,7 @@ print "ok 10\n";
     print "ok 12\n";
     eval { warn $msg }; print "not " unless $err eq $msg;
     print "ok 13\n";
+    eval qq/ use strict; \$\x{3b1} /;
+    print "not " unless $@ =~ /Global symbol "\$\x{3b1}"/;
+    print "ok 14\n";
 }