diff options
author | Brian Fraser <fraserbn@gmail.com> | 2011-07-22 09:51:03 -0300 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-10-06 13:01:05 -0700 |
commit | c271df943c312e7d6e9102703218e7253282f35e (patch) | |
tree | 5274f422eab9ea61a8823377b97e01a8bd002165 | |
parent | c8416c26ff9b40a27db1eddcb4f7dad8e7745e93 (diff) | |
download | perl-c271df943c312e7d6e9102703218e7253282f35e.tar.gz |
pp_ctl.c: pp_goto UTF8 cleanup.
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | pp_ctl.c | 5 | ||||
-rw-r--r-- | t/uni/goto.t | 41 |
3 files changed, 45 insertions, 2 deletions
@@ -5238,6 +5238,7 @@ t/uni/chomp.t See if Unicode chomp works t/uni/chr.t See if Unicode chr works t/uni/class.t See if Unicode classes work (\p) t/uni/fold.t See if Unicode folding works +t/uni/goto.t See if Unicode goto &sub works t/uni/greek.t See if Unicode in greek works t/uni/gv.t See if Unicode GVs work. t/uni/latin2.t See if Unicode in latin2 works @@ -2813,8 +2813,9 @@ PP(pp_goto) /* autoloaded stub? */ if (cv != GvCV(gv) && (cv = GvCV(gv))) goto retry; - autogv = gv_autoload4(GvSTASH(gv), GvNAME(gv), - GvNAMELEN(gv), FALSE); + autogv = gv_autoload_pvn(GvSTASH(gv), GvNAME(gv), + GvNAMELEN(gv), + GvNAMEUTF8(gv) ? SVf_UTF8 : 0); if (autogv && (cv = GvCV(autogv))) goto retry; tmpstr = sv_newmortal(); diff --git a/t/uni/goto.t b/t/uni/goto.t new file mode 100644 index 0000000000..922ddc15d9 --- /dev/null +++ b/t/uni/goto.t @@ -0,0 +1,41 @@ +#!./perl -w + +BEGIN { + require './test.pl'; +} + +plan tests => 4; + +use utf8; +use open qw( :utf8 :std ); + +sub goto_baresub { + goto &問題の原因; +} + +sub goto_softref { + goto &{"問題の原因"}; +} + +sub goto_softref_octal { + goto &{"\345\225\217\351\241\214\343\201\256\345\216\237\345\233\240"}; +} + +sub 問題の原因 { + 1; +} + +ok goto_baresub(), "Magical goto works on an UTF-8 sub,"; +ok goto_softref(), "..and an UTF-8 softref sub,"; + +{ + local $@; + eval { goto_softref_octal() }; + like $@, qr/Goto undefined subroutine &main::\345\225\217\351\241\214\343\201\256\345\216\237\345\233\240/, "But does NOT find the softref sub when it's lacking the UTF-8 flag"; +} + +{ + local $@; + eval { goto &因 }; + like $@, qr/Goto undefined subroutine &main::因/, "goto undefined sub gets the right error message"; +} |