In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/ed996a54e9e136efd3812a9f2d00d7102ed0ef1a?hp=e3384dcea386322f748cca779e4b8d80c8644024>
- Log ----------------------------------------------------------------- commit ed996a54e9e136efd3812a9f2d00d7102ed0ef1a Author: Father Chrysostomos <[email protected]> Date: Sun Nov 23 23:41:45 2014 -0800 Fix UTF8 lex sub names UTF8 lexical sub names were getting mangled, with extra junk on the end, due to a precedence problem. M op.c M pad.c M t/op/lexsub.t commit e44e71dc639b9c5d0bcbf2cb8c10dd72cd68e020 Author: Father Chrysostomos <[email protected]> Date: Sun Nov 23 23:04:30 2014 -0800 perl5220delta: Function::Parameters update F:P has had an update, but now it fails due to the METHOP type introduced in 5.21.5. Patch at https://rt.cpan.org/Ticket/Display.html?id=100518 M Porting/perl5220delta.pod commit cde31df6d3fbb113b82716e9da5aec599b618e81 Author: Father Chrysostomos <[email protected]> Date: Sun Nov 23 23:02:51 2014 -0800 perl5215delta.pod: typo M pod/perl5215delta.pod ----------------------------------------------------------------------- Summary of changes: Porting/perl5220delta.pod | 2 +- op.c | 5 +++-- pad.c | 2 +- pod/perl5215delta.pod | 2 +- t/op/lexsub.t | 16 +++++++++++++++- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/Porting/perl5220delta.pod b/Porting/perl5220delta.pod index b72b023..dd07e68 100644 --- a/Porting/perl5220delta.pod +++ b/Porting/perl5220delta.pod @@ -381,7 +381,7 @@ L<Data::Util> version 0.63 =item * -L<Function::Parameters> version 1.0402 +L<Function::Parameters> version 1.0602 =item * diff --git a/op.c b/op.c index d44a7ea..0bb4140 100644 --- a/op.c +++ b/op.c @@ -7935,7 +7935,8 @@ Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) CvNAME_HEK_set(*spot, hek = share_hek( PadnamePV(name)+1, - PadnameLEN(name)-1 * (PadnameUTF8(name) ? -1 : 1), hash + (PadnameLEN(name)-1) * (PadnameUTF8(name) ? -1 : 1), + hash ) ); CvLEXICAL_on(*spot); @@ -8092,7 +8093,7 @@ Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) U32 hash; PERL_HASH(hash, PadnamePV(name)+1, PadnameLEN(name)-1); hek = share_hek(PadnamePV(name)+1, - PadnameLEN(name)-1 * (PadnameUTF8(name) ? -1 : 1), + (PadnameLEN(name)-1) * (PadnameUTF8(name) ? -1 : 1), hash); } CvNAME_HEK_set(cv, hek); diff --git a/pad.c b/pad.c index 9da5536..a9581f8 100644 --- a/pad.c +++ b/pad.c @@ -2128,7 +2128,7 @@ S_cv_clone_pad(pTHX_ CV *proto, CV *cv, CV *outside, bool newcv) CvNAME_HEK_set( sv, share_hek(SvPVX_const(namesv)+1, - SvCUR(namesv) - 1 + (SvCUR(namesv) - 1) * (SvUTF8(namesv) ? -1 : 1), hash) ); diff --git a/pod/perl5215delta.pod b/pod/perl5215delta.pod index f832e85..969df17 100644 --- a/pod/perl5215delta.pod +++ b/pod/perl5215delta.pod @@ -479,7 +479,7 @@ class/method related info needed at runtime to improve performance of class/object method calls. C<< OP_METHOD >> and C<< OP_METHOD_NAMED >> are moved from being -C<< UNOP/SVOP >> to being C<< METHOD >>. +C<< UNOP/SVOP >> to being C<< METHOP >>. =back diff --git a/t/op/lexsub.t b/t/op/lexsub.t index e170555..32f8bc7 100644 --- a/t/op/lexsub.t +++ b/t/op/lexsub.t @@ -7,7 +7,7 @@ BEGIN { *bar::is = *is; *bar::like = *like; } -plan 144; +plan 146; # -------------------- Errors with feature disabled -------------------- # @@ -424,6 +424,13 @@ is runperl(switches => ['-lXMfeature=:all'], " - no 'No comma allowed' after state sub\n"; curr_test(curr_test()+1); } +{ + use utf8; + state sub ÏÎ¿Ï ; + eval { ÏÎ¿Ï }; + like $@, qr/^Undefined subroutine &ÏÎ¿Ï called at /, + 'state sub with utf8 name'; +} # -------------------- my -------------------- # @@ -793,6 +800,13 @@ is runperl(switches => ['-lXMfeature=:all'], my sub y :prototype() {$x}; is y, 43, 'my sub that looks like constant closure'; } +{ + use utf8; + my sub ÏÎ¿Ï ; + eval { ÏÎ¿Ï }; + like $@, qr/^Undefined subroutine &ÏÎ¿Ï called at /, + 'my sub with utf8 name'; +} # -------------------- Interactions (and misc tests) -------------------- # -- Perl5 Master Repository
