[perl.git] branch blead updated. v5.27.5-408-g73d689df0b

2017-11-16 Thread Karl Williamson
In perl.git, the branch blead has been updated



- Log -
commit 73d689df0b635676359707f9eaa2ce012ada9fd7
Author: Karl Williamson 
Date:   Thu Nov 16 22:28:49 2017 -0700

embed.fnc: Add X flag to newly private UTF16 fcns

The E flag added in cfd95a374972942cba5e8afc019dc6019815b45c needs
either the X flag or be private to its containing file.

Spotted by Craig Berry.

---

Summary of changes:
 embed.fnc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/embed.fnc b/embed.fnc
index fc0e1e4571..52bb84871d 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -1795,8 +1795,8 @@ p |void   |utilize|int aver|I32 floor|NULLOK OP* 
version|NN OP* idop|NULLOK OP* a
 ApM|void   |_force_out_malformed_utf8_message  \
|NN const U8 *const p|NN const U8 * const e|const U32 flags \
|const bool die_here
-Ep |U8*|utf16_to_utf8  |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
-Ep |U8*|utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 
*newlen
+EXp|U8*|utf16_to_utf8  |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
+EXp|U8*|utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 
*newlen
 AdpPR  |STRLEN |utf8_length|NN const U8* s|NN const U8 *e
 AipdR  |IV |utf8_distance  |NN const U8 *a|NN const U8 *b
 AipdRn |U8*|utf8_hop   |NN const U8 *s|SSize_t off

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.5-409-ge2091bb6ea

2017-11-16 Thread Zefram
In perl.git, the branch blead has been updated



- Log -
commit e2091bb6ea87111c32936c9170405a44995be338
Author: Zefram 
Date:   Fri Nov 17 05:28:21 2017 +

rip out quicksort and sort algorithm control

[perl #119635]

---

Summary of changes:
 embed.fnc   |   1 -
 embed.h |   1 -
 ext/B/t/f_sort  |   4 -
 ext/B/t/f_sort.t|  40 +--
 lib/B/Op_private.pm |   5 +-
 lib/sort.pm |  73 +-
 lib/sort.t  |  41 +--
 op.c|   2 -
 opcode.h| 206 
 perl.h  |   3 -
 pod/perldelta.pod   |  12 +
 pod/perlfunc.pod|  26 +-
 pod/perlsec.pod |   2 +-
 pp_sort.c   | 699 +---
 proto.h |   3 -
 regen/op_private|   1 -
 16 files changed, 152 insertions(+), 967 deletions(-)

diff --git a/embed.fnc b/embed.fnc
index 52bb84871d..c33833a53a 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -2270,7 +2270,6 @@ s |I32|amagic_cmp_locale|NN SV *const str1|NN SV 
*const str2
 s  |I32|sortcv |NN SV *const a|NN SV *const b
 s  |I32|sortcv_xsub|NN SV *const a|NN SV *const b
 s  |I32|sortcv_stacked |NN SV *const a|NN SV *const b
-s  |void   |qsortsvu   |NULLOK SV** array|size_t num_elts|NN 
SVCOMPARE_t compare
 #endif
 
 #if defined(PERL_IN_PP_SYS_C)
diff --git a/embed.h b/embed.h
index 2c047fb6d8..13277fc40c 100644
--- a/embed.h
+++ b/embed.h
@@ -1760,7 +1760,6 @@
 #define amagic_cmp(a,b)S_amagic_cmp(aTHX_ a,b)
 #define amagic_i_ncmp(a,b) S_amagic_i_ncmp(aTHX_ a,b)
 #define amagic_ncmp(a,b)   S_amagic_ncmp(aTHX_ a,b)
-#define qsortsvu(a,b,c)S_qsortsvu(aTHX_ a,b,c)
 #define sortcv(a,b)S_sortcv(aTHX_ a,b)
 #define sortcv_stacked(a,b)S_sortcv_stacked(aTHX_ a,b)
 #define sortcv_xsub(a,b)   S_sortcv_xsub(aTHX_ a,b)
diff --git a/ext/B/t/f_sort b/ext/B/t/f_sort
index 759523bb70..75e8f10596 100644
--- a/ext/B/t/f_sort
+++ b/ext/B/t/f_sort
@@ -68,10 +68,6 @@ sub other::backwards ($$) { $_[1] cmp $_[0]; }
 use sort 'stable';
 @new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
 
-# force use of mergesort (not portable outside Perl 5.8)
-use sort '_mergesort';
-@new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
-
 # you should have a good reason to do this!
 @articles = sort {$FooPack::b <=> $FooPack::a} @files;
 
diff --git a/ext/B/t/f_sort.t b/ext/B/t/f_sort.t
index ccee813fc8..24a9f2e38c 100644
--- a/ext/B/t/f_sort.t
+++ b/ext/B/t/f_sort.t
@@ -13,7 +13,7 @@ BEGIN {
 }
 }
 use OptreeCheck;
-plan tests => 40;
+plan tests => 38;
 
 =head1 f_sort.t
 
@@ -679,44 +679,6 @@ checkOptree(note   => q{},
code   => q{use sort 'stable'; @new = sort { substr($a, 3, 5) cmp 
substr($b, 3, 5) } @old; },
expect => $expect, expect_nt => $expect_nt);
 
-=for gentest
-
-# chunk: # force use of mergesort (not portable outside Perl 5.8)
-use sort '_mergesort';
-@new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
-
-=cut
-
-checkOptree(note   => q{},
-   bcopts => q{-exec},
-   code   => q{use sort '_mergesort'; @new = sort { substr($a, 3, 5) 
cmp substr($b, 3, 5) } @old; },
-   expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-# 1  <;> nextstate(main 662 (eval 42):1) v:%,{
-# 2  <0> pushmark s
-# 3  <0> pushmark s
-# 4  <#> gv[*old] s
-# 5  <1> rv2av[t9] lKM/1
-# 6  <@> sort lKS*
-# 7  <0> pushmark s
-# 8  <#> gv[*new] s
-# 9  <1> rv2av[t2] lKRM*/1
-# a  <2> aassign[t14] KS/COM_AGG
-# b  <1> leavesub[1 ref] K/REFC,1
-EOT_EOT
-# 1  <;> nextstate(main 578 (eval 15):1) v:%,{
-# 2  <0> pushmark s
-# 3  <0> pushmark s
-# 4  <$> gv(*old) s
-# 5  <1> rv2av[t5] lKM/1
-# 6  <@> sort lKS*
-# 7  <0> pushmark s
-# 8  <$> gv(*new) s
-# 9  <1> rv2av[t1] lKRM*/1
-# a  <2> aassign[t6] KS/COM_AGG
-# b  <1> leavesub[1 ref] K/REFC,1
-EONT_EONT
-
-
 =for gentest
 
 # chunk: # you should have a good reason to do this!
diff --git a/lib/B/Op_private.pm b/lib/B/Op_private.pm
index 6c9840e9bc..aaac03a372 100644
--- a/lib/B/Op_private.pm
+++ b/lib/B/Op_private.pm
@@ -538,7 +538,7 @@ $bits{sin}{0} = $bf[0];
 $bits{snetent}{0} = $bf[0];
 @{$bits{socket}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
 @{$bits{sockpair}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
-@{$bits{sort}}{7,6,5,4,3,2,1,0} = ('OPpSORT_UNSTABLE', 'OPpSORT_STABLE', 
'OPpSORT_QSORT', 'OPpSORT_DESCEND', 'OPpSORT_INPLACE', 'OPpSORT_REVERSE', 
'OPpSORT_INTEGER', 'OPpSORT_NUMERIC');
+@{$bits{sort}}{7,6,4,3,2,1,0} = ('OPpSORT_UNSTABLE', 'OPpSORT_STABLE', 
'OPpSORT_DESCEND', 'OPpSORT_INPLACE', 'OPpSORT_REVERSE', 'OPpSORT_INTEGER', 
'OPpSORT_NUMERIC');
 @{$bits{splice}}{3,2,1,0} = 

Re: [perl.git] branch blead updated. v5.27.5-404-gcfd95a3749

2017-11-16 Thread Karl Williamson

On 11/16/2017 09:41 PM, Craig A. Berry wrote:

On 11/16/17 11:55 AM, Karl Williamson wrote:

In perl.git, the branch blead has been updated

 



- Log -
commit cfd95a374972942cba5e8afc019dc6019815b45c
Author: Karl Williamson 
Date:   Tue Nov 14 21:41:25 2017 -0700

 Remove UTF16 functions from public access


This breaks linking the XS::APITest extension on VMS and will probably
do the same on AIX or anything else with a strict linker. The docs in
embed.fnc say:

:   E  Visible to extensions included in the Perl core:
:
: in embed.h, change "#ifdef PERL_CORE"
: into   "#if defined(PERL_CORE) || defined(PERL_EXT)"
:
:  To be usable from dynamically loaded extensions, either:
: 1) must be static to its containing file ("i" or "s" flag); or
: 2) be combined with the "X" flag.

Neither 1 nor 2 was done in this case. A wild guess would be that X is
required or that XS::APITest, whose name implies that it has something
to do with testing the API, might need changes to track removals from
the API.



X is added in 73d689df0b635676359707f9eaa2ce012ada9fd7


Re: [perl.git] branch blead updated. v5.27.5-404-gcfd95a3749

2017-11-16 Thread Craig A. Berry

On 11/16/17 11:55 AM, Karl Williamson wrote:

In perl.git, the branch blead has been updated



- Log -
commit cfd95a374972942cba5e8afc019dc6019815b45c
Author: Karl Williamson 
Date:   Tue Nov 14 21:41:25 2017 -0700

 Remove UTF16 functions from public access


This breaks linking the XS::APITest extension on VMS and will probably
do the same on AIX or anything else with a strict linker. The docs in
embed.fnc say:

:   E  Visible to extensions included in the Perl core:
:
: in embed.h, change "#ifdef PERL_CORE"
: into   "#if defined(PERL_CORE) || defined(PERL_EXT)"
:
:  To be usable from dynamically loaded extensions, either:
: 1) must be static to its containing file ("i" or "s" flag); or
: 2) be combined with the "X" flag.

Neither 1 nor 2 was done in this case. A wild guess would be that X is
required or that XS::APITest, whose name implies that it has something
to do with testing the API, might need changes to track removals from
the API.


[perl.git] branch blead updated. v5.27.5-407-geb611d083d

2017-11-16 Thread Father Chrysostomos
In perl.git, the branch blead has been updated



- Log -
commit eb611d083dade65d1aa071a4587336669efc5ebf
Author: Father Chrysostomos 
Date:   Thu Nov 16 20:07:27 2017 -0800

Suppress warning in XS-APItest’s sniscow.t

---

Summary of changes:
 ext/XS-APItest/t/sviscow.t | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ext/XS-APItest/t/sviscow.t b/ext/XS-APItest/t/sviscow.t
index bcc9da8ebd..d0f3062f5d 100644
--- a/ext/XS-APItest/t/sviscow.t
+++ b/ext/XS-APItest/t/sviscow.t
@@ -1,10 +1,10 @@
 use strict;
-use warnings; no warnings 'once';
 
 use Test::More tests => 1;
 
 use XS::APItest;
 use Hash::Util 'lock_value';
+use warnings; no warnings 'once', 'Hash::Util';
 
 my %h;
 $h{g} = *foo;

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.5-406-ga6c31837e6

2017-11-16 Thread Zefram
In perl.git, the branch blead has been updated



- Log -
commit a6c31837e629c46be2f7496149b36a4b79f93484
Author: Zefram 
Date:   Fri Nov 17 03:26:47 2017 +

correctly error on -k "nonexistent" on Windows

The file test operators for Unix permission bits were returning a blanket
false result on systems where the bit being tested for doesn't exist.
That's a sensible way to treat a nonexistent bit when statting a file,
but the false result was being returned without checking that the argument
actually refers to a file.  Remove the pre-stat checks for nonexistent
bits, so that we get the correct errors for non-files.  We still get a
blanket false result for nonexistent bits on files.

---

Summary of changes:
 pod/perldelta.pod |  7 +++
 pp_sys.c  | 18 --
 2 files changed, 7 insertions(+), 18 deletions(-)

diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 8dbc185976..03d545cbe7 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -576,6 +576,13 @@ failing due to being applied to a closed or otherwise 
invalid file handle.
 
 =item *
 
+File test operators for Unix permission bits that don't exist on a
+particular platform, such as C<-k> (sticky bit) on Windows, now check that
+the file being tested exists before returning the blanket false result,
+and yield the appropriate errors if the argument doesn't refer to a file.
+
+=item *
+
 The in-place reverse optimisation now correctly strengthens weak
 references using the L|perlapi/sv_rvunweaken>
 API function.
diff --git a/pp_sys.c b/pp_sys.c
index a1ea8f5699..a66cb4ec94 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -3374,24 +3374,6 @@ PP(pp_ftrowned)
 }
 tryAMAGICftest_MG(opchar);
 
-/* I believe that all these three are likely to be defined on most every
-   system these days.  */
-#ifndef S_ISUID
-if(PL_op->op_type == OP_FTSUID) {
-   FT_RETURNNO;
-}
-#endif
-#ifndef S_ISGID
-if(PL_op->op_type == OP_FTSGID) {
-   FT_RETURNNO;
-}
-#endif
-#ifndef S_ISVTX
-if(PL_op->op_type == OP_FTSVTX) {
-   FT_RETURNNO;
-}
-#endif
-
 result = my_stat_flags(0);
 if (result < 0)
FT_RETURNUNDEF;

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.5-405-ga9fdb5b799

2017-11-16 Thread Craig A. Berry
In perl.git, the branch blead has been updated



- Log -
commit a9fdb5b7996c84e762ac02fcb9949dadc31c1bdc
Author: Craig A. Berry 
Date:   Thu Nov 16 15:01:56 2017 -0600

Portability fix for Test::Simple 'do' test.

Prepending './' to what might not be a Unix filespec can't be
relied on to work (and it definitely doesn't on VMS). So use the
functions File::Spec provides to do this portably.

N.B.  File::Spec->catfile() is smart enough not to prepend the
value of curdir() if it's already there.

---

Summary of changes:
 Porting/Maintainers.pl  | 4 
 cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t | 3 ++-
 t/porting/customized.dat| 1 +
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index fb5b8c1288..511e7424bd 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -1082,6 +1082,10 @@ use File::Glob qw(:case);
 t/zzz-check-breaks.t
 ),
 ],
+'CUSTOMIZED'   => [ qw[
+t/Legacy/Tester/tbt_09do.t
+] ],
+
 },
 
 'Text::Abbrev' => {
diff --git a/cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t 
b/cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t
index 570ca9d7d1..97b8f57797 100644
--- a/cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t
+++ b/cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t
@@ -9,7 +9,8 @@ use File::Basename qw(dirname);
 use File::Spec qw();
 
 my $file = File::Spec->join(dirname(__FILE__), 'tbt_09do_script.pl');
-$file = "./$file" unless $file =~ m{^\.?/};
+$file = File::Spec->catfile(File::Spec->curdir(), $file)
+unless File::Spec->file_name_is_absolute($file);
 my $done = do $file;
 ok(defined($done), 'do succeeded') or do {
 if ($@) {
diff --git a/t/porting/customized.dat b/t/porting/customized.dat
index 3787dfa19b..bbd3fc3420 100644
--- a/t/porting/customized.dat
+++ b/t/porting/customized.dat
@@ -20,6 +20,7 @@ Pod::Checker cpan/Pod-Checker/t/pod/testpchk.pl 
b2072c7f4379fd050e15424175d7cac5
 Pod::Perldoc cpan/Pod-Perldoc/lib/Pod/Perldoc.pm 
582be34c077c9ff44d99914724a0cc2140bcd48c
 Socket cpan/Socket/Socket.pm ee83312b6e3e0185af8d41a18635913d84b1b651
 Socket cpan/Socket/Socket.xs edd4fed212785f11c5c2095a75941dad27d586d9
+Test::Simple cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t 
59e2880e287e75ed5c129e7136dfa43344ee3d3b
 autodie cpan/autodie/t/mkdir.t 9e70d2282a3cc7d76a78bf8144fccba20fb37dac
 perlfaq cpan/perlfaq/lib/perlfaq5.pod bcc1b6af3b6dff3973643acf8d5e741463374123
 perlfaq cpan/perlfaq/lib/perlfaq8.pod bffbc0c8fa828aead24e0891a5e789369a8e0743

-- 
Perl5 Master Repository


[perl.git] branch smoke-me/khw-locale deleted. v5.27.5-414-g34c6216f11

2017-11-16 Thread Karl Williamson
In perl.git, the branch smoke-me/khw-locale has been deleted



   was  34c6216f118ebe44619de655b35c00eef773ab21

- Log -
34c6216f118ebe44619de655b35c00eef773ab21 f
---

-- 
Perl5 Master Repository


[perl.git] branch smoke-me/khw-invariant created. v5.27.5-404-gc0905b8b45

2017-11-16 Thread Karl Williamson
In perl.git, the branch smoke-me/khw-invariant has been created



at  c0905b8b454ac194abf559ae1ad3f436d42603b2 (commit)

- Log -
commit c0905b8b454ac194abf559ae1ad3f436d42603b2
Author: Karl Williamson 
Date:   Wed Nov 15 10:19:33 2017 -0700

XXX flesh out commit msg: Search for UTF-8 invariants by word

---

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.5-404-gcfd95a3749

2017-11-16 Thread Karl Williamson
In perl.git, the branch blead has been updated



- Log -
commit cfd95a374972942cba5e8afc019dc6019815b45c
Author: Karl Williamson 
Date:   Tue Nov 14 21:41:25 2017 -0700

Remove UTF16 functions from public access

See thread starting at
http://nntp.perl.org/group/perl.perl5.porters/247120

I don't believe this needs a perldelta, as the functions weren't
documented, hence are not supposed to be used, and in fact are not used
in cpan.

---

Summary of changes:
 embed.fnc | 4 ++--
 embed.h   | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/embed.fnc b/embed.fnc
index 6269498ec7..fc0e1e4571 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -1795,8 +1795,8 @@ p |void   |utilize|int aver|I32 floor|NULLOK OP* 
version|NN OP* idop|NULLOK OP* a
 ApM|void   |_force_out_malformed_utf8_message  \
|NN const U8 *const p|NN const U8 * const e|const U32 flags \
|const bool die_here
-Ap |U8*|utf16_to_utf8  |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
-Ap |U8*|utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 
*newlen
+Ep |U8*|utf16_to_utf8  |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
+Ep |U8*|utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 
*newlen
 AdpPR  |STRLEN |utf8_length|NN const U8* s|NN const U8 *e
 AipdR  |IV |utf8_distance  |NN const U8 *a|NN const U8 *b
 AipdRn |U8*|utf8_hop   |NN const U8 *s|SSize_t off
diff --git a/embed.h b/embed.h
index 46c59b5b4e..2c047fb6d8 100644
--- a/embed.h
+++ b/embed.h
@@ -729,8 +729,6 @@
 #define unpackstring(a,b,c,d,e)Perl_unpackstring(aTHX_ a,b,c,d,e)
 #define unsharepvn(a,b,c)  Perl_unsharepvn(aTHX_ a,b,c)
 #define upg_version(a,b)   Perl_upg_version(aTHX_ a,b)
-#define utf16_to_utf8(a,b,c,d) Perl_utf16_to_utf8(aTHX_ a,b,c,d)
-#define utf16_to_utf8_reversed(a,b,c,d)
Perl_utf16_to_utf8_reversed(aTHX_ a,b,c,d)
 #define utf8_distance(a,b) Perl_utf8_distance(aTHX_ a,b)
 #define utf8_hop   Perl_utf8_hop
 #define utf8_hop_back  Perl_utf8_hop_back
@@ -939,6 +937,8 @@
 #define sv_only_taint_gmagic   S_sv_only_taint_gmagic
 #define swash_fetch(a,b,c) Perl_swash_fetch(aTHX_ a,b,c)
 #define swash_init(a,b,c,d,e)  Perl_swash_init(aTHX_ a,b,c,d,e)
+#define utf16_to_utf8(a,b,c,d) Perl_utf16_to_utf8(aTHX_ a,b,c,d)
+#define utf16_to_utf8_reversed(a,b,c,d)
Perl_utf16_to_utf8_reversed(aTHX_ a,b,c,d)
 #define validate_proto(a,b,c,d)Perl_validate_proto(aTHX_ a,b,c,d)
 #define vivify_defelem(a)  Perl_vivify_defelem(aTHX_ a)
 #define yylex()Perl_yylex(aTHX)

-- 
Perl5 Master Repository


[perl.git] branch smoke-me/khw-utf16 deleted. v5.27.5-371-g5040600e03

2017-11-16 Thread Karl Williamson
In perl.git, the branch smoke-me/khw-utf16 has been deleted



   was  5040600e03277a397180acc678bd4a490f1ef6b0

- Log -
5040600e03277a397180acc678bd4a490f1ef6b0 Remove UTF16 functions from public 
access
---

-- 
Perl5 Master Repository


[perl.git] branch smoke-me/khw-locale deleted. v5.27.5-390-g552cf2cd9e

2017-11-16 Thread Karl Williamson
In perl.git, the branch smoke-me/khw-locale has been deleted



   was  552cf2cd9efe3aeebfd73239196221ef031ddfcd

- Log -
552cf2cd9efe3aeebfd73239196221ef031ddfcd Revert "assert"
---

-- 
Perl5 Master Repository


[perl.git] branch smoke-me/khw-locale created. v5.27.5-414-g34c6216f11

2017-11-16 Thread Karl Williamson
In perl.git, the branch smoke-me/khw-locale has been created



at  34c6216f118ebe44619de655b35c00eef773ab21 (commit)

- Log -
commit 34c6216f118ebe44619de655b35c00eef773ab21
Author: Karl Williamson 
Date:   Thu Nov 16 10:09:29 2017 -0700

f

commit ec9334b3359f1c76f0de51a7cd0035eb0b6848e8
Author: Karl Williamson 
Date:   Wed Nov 15 21:40:47 2017 -0700

f

commit 02dff66b67b570db270c024dac950c4a4ecf43b6
Author: Karl Williamson 
Date:   Wed Nov 15 21:24:08 2017 -0700

f

commit 41fb450c33ff2955f92ef84384cdfedab8709f71
Author: Karl Williamson 
Date:   Wed Nov 15 13:41:21 2017 -0700

Revert "assert"

This reverts commit 6b25b296d4c0f79dcbf019e402face987b3853e9.

commit d808d1793713dbe163afa12e9b940bb067c87d19
Author: Karl Williamson 
Date:   Wed Nov 15 13:06:45 2017 -0700

assert

commit 3a805734c19d0c1d568df2a9555db02d339b7be0
Author: Karl Williamson 
Date:   Wed Nov 15 13:01:15 2017 -0700

later

commit eeb11a2b1da2df24d00754b2630a9695bf74a432
Author: Karl Williamson 
Date:   Wed Nov 15 11:22:30 2017 -0700

XXX word invariant

commit 05216f1f9d7515cbc70544114f04936e15ea1e0d
Author: Karl Williamson 
Date:   Wed Nov 15 10:19:33 2017 -0700

Refactor loop in if_utf8_invariant_string_loc()

This changes from a while() to a for() in preparation for the next
commit.

commit 39613742ecb0e60645135af815c156bbe6422e66
Author: Karl Williamson 
Date:   Tue Nov 14 22:27:06 2017 -0700

mg.c: Fix typo in #if

This typo only affected platforms without the locale category
LC_MESSAGES.  Principally this is Windows.

commit f27af77a564f083cc6158c8f7912c2a8978e2d21
Author: Karl Williamson 
Date:   Mon Aug 28 18:01:43 2017 -0600

XXX may include other things after final edits: 
ExtUtils::ParseXS/lib/perlxs.pod: Nits

This removes extra blanks following colons that don't mean the normal
thing for colons that traditionally have two spaces after them, and
capitalizes Perl.

commit 3b521cd074c2c8b4154c538920fa6acccf0b2244
Author: Karl Williamson 
Date:   Wed Jul 26 08:59:33 2017 -0600

Teach perl about more locale categories

glibc has various other categories than the ones perl handles, for
example LC_PAPER.  This commit adds knowledge of these to perl, so that
one can set them, interrogate them, and have libraries work on them,
even though perl itself does not.

This is in preparation for future commits, where it becomes more
important than currently for perl to know about all the locale
categories on the system.

I looked through various other systems to try to find other categories,
but did not see any.  If a system does have such a category, it is
pretty easy to tell perl about it, and recompile.  Use the changes in
this commit as a template, and send an email to perl...@perl.org, so
that the next Perl release will have it.

---

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.5-403-g60fae40da1

2017-11-16 Thread Yves Orton
In perl.git, the branch blead has been updated



- Log -
commit 60fae40da1a47d38fee85f0fc86e27f52c184f88
Author: Yves Orton 
Date:   Wed Nov 15 22:27:19 2017 +0100

precise control over order tests are run in TEST

commit dbb571062f3e35020abd3df7d9439ad7a40cd560
Author: Yves Orton 
Date:   Wed Nov 15 22:26:48 2017 +0100

handy.h: add a comment about perl_assert_ptr()

---

Summary of changes:
 handy.h |  3 +++
 t/TEST  | 31 +++
 2 files changed, 34 insertions(+)

diff --git a/handy.h b/handy.h
index 87c45471d1..e049192f39 100644
--- a/handy.h
+++ b/handy.h
@@ -2448,6 +2448,9 @@ void Perl_mem_log_del_sv(const SV *sv, const char 
*filename, const int linenumbe
 #define Safefree(d)safefree(MEM_LOG_FREE((Malloc_t)(d)))
 #endif
 
+/* assert that a valid ptr has been supplied - use this instead of assert(ptr) 
 *
+ * as it handles cases like constant string arguments without throwing 
warnings *
+ * the cast is required, as is the inequality check, to avoid warnings 
 */
 #define perl_assert_ptr(p) assert( ((void*)(p)) != 0 )
 
 
diff --git a/t/TEST b/t/TEST
index 260226b481..d5649732af 100755
--- a/t/TEST
+++ b/t/TEST
@@ -499,6 +499,37 @@ unless (@ARGV) {
_find_tests('bigmem') if $ENV{PERL_TEST_MEMORY};
 }
 }
+@ARGV= do {
+my @order= (
+   "base",
+   "comp",
+   "run",
+   "cmd",
+   "io",
+   "re",
+   "opbasic",
+   "op",
+   "uni",
+   "mro",
+   "lib",
+   "ext",
+   "dist",
+   "cpan",
+   "perf",
+   "porting",
+);
+my %order= map { $order[$_] => 1+$_ } 0..$#order;
+my $idx= 0;
+map {
+   $_->[0]
+} sort {
+   $a->[3] <=> $b->[3] ||
+   $a->[1] <=> $b->[1]
+} map {
+   my $root= /(\w+)/ ? $1 : "";
+   [ $_, $idx++, $root, $order{$root}||=0 ]
+} @ARGV;
+};
 
 if ($::deparse) {
 _testprogs('deparse', '',   @ARGV);

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.5-401-gc7be253fdf

2017-11-16 Thread Dagfinn Ilmari Mannsåker
In perl.git, the branch blead has been updated



- Log -
commit c7be253fdfd98c3c7a091c34b43f3f16b4f9af0d
Author: Dagfinn Ilmari Mannsåker 
Date:   Thu Nov 16 16:09:27 2017 +

Use strict and warnings in stat.t

Either one would have caught the error fixed by the previous commit.

commit 2281c8462dde9cc5a086fe4fe2278a01211e1f85
Author: Dagfinn Ilmari Mannsåker 
Date:   Thu Nov 16 16:08:43 2017 +

Fix $$ variable usage in stat.t

"$$_TEST" gets parsed as "${$_TEST}", which evaluates to the empty
string, because this test uses neither strict nor warnings.

---

Summary of changes:
 t/op/stat.t | 43 +--
 1 file changed, 25 insertions(+), 18 deletions(-)

diff --git a/t/op/stat.t b/t/op/stat.t
index 2c93ac02ad..905eb85fd4 100644
--- a/t/op/stat.t
+++ b/t/op/stat.t
@@ -6,6 +6,8 @@ BEGIN {
 set_up_inc('../lib');
 }
 
+use strict;
+use warnings;
 use Config;
 
 my ($Null, $Curdir);
@@ -32,22 +34,22 @@ my $Perl = which_perl();
 $ENV{LC_ALL}   = 'C';  # Forge English error messages.
 $ENV{LANGUAGE} = 'C';  # Ditto in GNU.
 
-$Is_Amiga   = $^O eq 'amigaos';
-$Is_Cygwin  = $^O eq 'cygwin';
-$Is_Darwin  = $^O eq 'darwin';
-$Is_Dos = $^O eq 'dos';
-$Is_MSWin32 = $^O eq 'MSWin32';
-$Is_NetWare = $^O eq 'NetWare';
-$Is_OS2 = $^O eq 'os2';
-$Is_Solaris = $^O eq 'solaris';
-$Is_VMS = $^O eq 'VMS';
-$Is_MPRAS   = $^O =~ /svr4/ && -f '/etc/.relid';
-$Is_Android = $^O =~ /android/;
-$Is_Dfly= $^O eq 'dragonfly';
+my $Is_Amiga   = $^O eq 'amigaos';
+my $Is_Cygwin  = $^O eq 'cygwin';
+my $Is_Darwin  = $^O eq 'darwin';
+my $Is_Dos = $^O eq 'dos';
+my $Is_MSWin32 = $^O eq 'MSWin32';
+my $Is_NetWare = $^O eq 'NetWare';
+my $Is_OS2 = $^O eq 'os2';
+my $Is_Solaris = $^O eq 'solaris';
+my $Is_VMS = $^O eq 'VMS';
+my $Is_MPRAS   = $^O =~ /svr4/ && -f '/etc/.relid';
+my $Is_Android = $^O =~ /android/;
+my $Is_Dfly= $^O eq 'dragonfly';
 
-$Is_Dosish  = $Is_Dos || $Is_OS2 || $Is_MSWin32 || $Is_NetWare;
+my $Is_Dosish  = $Is_Dos || $Is_OS2 || $Is_MSWin32 || $Is_NetWare;
 
-$ufs_no_ctime = ($Is_Dfly || $Is_Darwin) && (() = `df -t ufs . 2>/dev/null`) 
== 2;
+my $ufs_no_ctime = ($Is_Dfly || $Is_Darwin) && (() = `df -t ufs . 
2>/dev/null`) == 2;
 
 if ($Is_Cygwin && !is_miniperl) {
   require Win32;
@@ -371,7 +373,7 @@ SKIP: {
 ok(! -t TTY,'!-t on closed TTY filehandle');
 
 {
-local $TODO = 'STDIN not a tty when output is to pipe' if $Is_VMS;
+local our $TODO = 'STDIN not a tty when output is to pipe' if $Is_VMS;
 ok(-t,  '-t on STDIN');
 }
 }
@@ -480,6 +482,7 @@ like $@, qr/^The stat preceding lstat\(\) wasn't an lstat 
at /,
 open(FOO, ">$tmpfile") || DIE("Can't open temp test file: $!");
 my @statbuf = stat FOO;
 stat "test.pl";
+no warnings 'io';
 my @lstatbuf = lstat *FOO{IO};
 is "@lstatbuf", "@statbuf", 'lstat $ioref reverts to regular fstat';
 close(FOO);
@@ -587,7 +590,6 @@ SKIP: {
 
 # [perl #71002]
 {
-local $^W = 1;
 my $w;
 local $SIG{__WARN__} = sub { warn shift; ++$w };
 stat 'prepeinamehyparcheiarcheiometoonomaavto';
@@ -617,6 +619,7 @@ SKIP:
 
 my $Errno_loaded = eval { require Errno };
 my @statarg = ($statfile, $statfile);
+no warnings 'syntax';
 ok !stat(@statarg),
 'stat on an array of valid paths should warn and should not return any 
data';
 my $error = 0+$!;
@@ -627,11 +630,15 @@ SKIP:
 }
 
 # [perl #131895] stat() doesn't fail on filenames containing \0 / NUL
-ok !stat("TEST\0-"), 'stat on filename with \0';
+{
+no warnings 'syscalls';
+ok !stat("TEST\0-"), 'stat on filename with \0';
+}
 SKIP: {
-my $link = "stat_t_$$_TEST.symlink";
+my $link = "stat_t_$$\_TEST.symlink";
 my $can_symlink = eval { symlink "TEST", $link };
 skip "cannot symlink", 1 unless $can_symlink;
+no warnings 'syscalls';
 ok !lstat("$link\0-"), 'lstat on filename with \0';
 unlink $link;
 }

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.5-399-g2f4ab1b0f7

2017-11-16 Thread Craig A. Berry
In perl.git, the branch blead has been updated



- Log -
commit 2f4ab1b0f783f1c7c78326e61db1a58719973c4f
Author: Craig A. Berry 
Date:   Thu Nov 16 09:08:33 2017 -0600

Use safer symlink name in stat.t.

The file pattern TEST.symlink.$$ is an ambiguous filename on VMS
because the digits of the $$ could be construed as a version
number or as part of the filename proper, depending on various
environmental settings.  This would not cause stat.t to fail but
could prevent removal of the symlink.  Which would then cause
ext/File-Glob/t/basic.t to fail because it scans the t/ directory
for files match TES* and falls down when it finds files it does
not expect.

In principle this could cause trouble for parallel tests on any
platform if stat.t's detritus happens to be present while the
File::Glob tests are running.

Short of a major rethink of the test suite to stop tests from using
t/ as their personal playground, the safest bet seems to be to use
a filename that is unambiguous on VMS and will not collide with
tests expecting t/TEST to be the only file in that directory that
begins with 'TES'.

---

Summary of changes:
 t/op/stat.t | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/t/op/stat.t b/t/op/stat.t
index f93f21deb6..2c93ac02ad 100644
--- a/t/op/stat.t
+++ b/t/op/stat.t
@@ -629,7 +629,7 @@ SKIP:
 # [perl #131895] stat() doesn't fail on filenames containing \0 / NUL
 ok !stat("TEST\0-"), 'stat on filename with \0';
 SKIP: {
-my $link = "TEST.symlink.$$";
+my $link = "stat_t_$$_TEST.symlink";
 my $can_symlink = eval { symlink "TEST", $link };
 skip "cannot symlink", 1 unless $can_symlink;
 ok !lstat("$link\0-"), 'lstat on filename with \0';

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.5-398-g19a8de4862

2017-11-16 Thread Zefram
In perl.git, the branch blead has been updated



- Log -
commit 19a8de486236b6004a51aa6c16eb9fcde47d86d1
Author: Zefram 
Date:   Thu Nov 16 14:56:11 2017 +

fix lvalue context for 4-arg substr

4-arg substr uses its first arg as an lvalue, but wasn't lvaluifying
it properly.  [perl #115258]

---

Summary of changes:
 op.c  |  2 +-
 t/op/substr.t | 28 +++-
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/op.c b/op.c
index c617ad2a00..2e4dae43c6 100644
--- a/op.c
+++ b/op.c
@@ -13385,7 +13385,7 @@ Perl_ck_substr(pTHX_ OP *o)
if (kid->op_type == OP_NULL)
kid = OpSIBLING(kid);
if (kid)
-   kid->op_flags |= OPf_MOD;
+   op_lvalue(kid, o->op_type);
 
 }
 return o;
diff --git a/t/op/substr.t b/t/op/substr.t
index 3d850f51e1..dade46d99f 100644
--- a/t/op/substr.t
+++ b/t/op/substr.t
@@ -22,7 +22,7 @@ $SIG{__WARN__} = sub {
  }
 };
 
-plan(392);
+plan(399);
 
 run_tests() unless caller;
 
@@ -883,4 +883,30 @@ fresh_perl_is('$0 = "/usr/bin/perl"; substr($0, 0, 0, 
$0)', '', {}, "(perl #1293
 is $x, "\x{100}", "RT#130624: heap-use-after-free in 4-arg substr 
(targ)";
 }
 
+{
+our @ta;
+$#ta = -1;
+substr($#ta, 0, 2) = 23;
+is $#ta, 23;
+$#ta = -1;
+substr($#ta, 0, 2) =~ s/\A..\z/23/s;
+is $#ta, 23;
+$#ta = -1;
+substr($#ta, 0, 2, 23);
+is $#ta, 23;
+sub ta_tindex :lvalue { $#ta }
+$#ta = -1;
+ta_tindex() = 23;
+is $#ta, 23;
+$#ta = -1;
+substr(ta_tindex(), 0, 2) = 23;
+is $#ta, 23;
+$#ta = -1;
+substr(ta_tindex(), 0, 2) =~ s/\A..\z/23/s;
+is $#ta, 23;
+$#ta = -1;
+substr(ta_tindex(), 0, 2, 23);
+is $#ta, 23;
+}
 
+1;

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.5-397-ga2ed475b03

2017-11-16 Thread Karl Williamson
In perl.git, the branch blead has been updated



- Log -
commit a2ed475b03b6a44991249033e2fa7dc3818d361b
Author: Karl Williamson 
Date:   Thu Nov 16 07:54:46 2017 -0700

I18N::Langinfo: Add note to pod

For the last several releases of Perl, the items listed in the note were
always those from the C locale, regardless of the real one.  Before
that, it was even more buggy, whether you got the C locale or the real
one was complicated.

---

Summary of changes:
 ext/I18N-Langinfo/Langinfo.pm | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/ext/I18N-Langinfo/Langinfo.pm b/ext/I18N-Langinfo/Langinfo.pm
index 1b1a480ec5..7a7005f7ab 100644
--- a/ext/I18N-Langinfo/Langinfo.pm
+++ b/ext/I18N-Langinfo/Langinfo.pm
@@ -72,7 +72,7 @@ our @EXPORT_OK = qw(
YESSTR
 );
 
-our $VERSION = '0.14';
+our $VERSION = '0.15';
 
 XSLoader::load();
 
@@ -174,6 +174,11 @@ you can wrap the import in an eval like this:
 
 By default only the C function is exported.
 
+=head1 BUGS
+
+Before Perl 5.28, the returned values are unreliable for the C and
+C locale constants.
+
 =head1 SEE ALSO
 
 L, L, L, L.

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.5-396-gdd6661605f

2017-11-16 Thread Zefram
In perl.git, the branch blead has been updated



- Log -
commit dd6661605fe0a54c602f2e55f875acfdcd330b79
Author: Zefram 
Date:   Thu Nov 16 11:01:34 2017 +

deparse trailing-colon barewords carefully

A bareword ending in "::" has one "::" suffix stripped upon parsing,
so when deparsing a glob name ending in "::" as a bareword it needs
another "::" added.  But this only applies to barewords, not to glob
names that follow sigils, so the deparser needs to distinguish between
contexts for glob names in some places where it previously did not.
Fixes [perl #113716].

This change supersedes the recent change about deparsing glob names in
the CORE stash.  Those glob names are now handled by suffixing "::",
and this suffix is only added in bareword contexts, making the handling
of the two unusual cases identical.

---

Summary of changes:
 lib/B/Deparse.pm | 18 --
 lib/B/Deparse.t  | 48 +++-
 2 files changed, 59 insertions(+), 7 deletions(-)

diff --git a/lib/B/Deparse.pm b/lib/B/Deparse.pm
index 00e31d31d9..cc439ae182 100644
--- a/lib/B/Deparse.pm
+++ b/lib/B/Deparse.pm
@@ -1778,7 +1778,6 @@ sub gv_name {
 {
$stash = "";
 } else {
-   $stash = "::$stash" if $stash eq "CORE";
$stash = $stash . "::";
 }
 if (!$raw and $name =~ /^(\^..|{)/) {
@@ -1794,7 +1793,7 @@ sub gv_name {
 sub stash_variable {
 my ($self, $prefix, $name, $cx) = @_;
 
-return "$prefix$name" if $name =~ /::/;
+return $prefix.$self->maybe_qualify($prefix, $name) if $name =~ /::/;
 
 unless ($prefix eq '$' || $prefix eq '@' || $prefix eq '&' || #'
$prefix eq '%' || $prefix eq '$#') {
@@ -1870,11 +1869,16 @@ sub stash_variable_name {
 sub maybe_qualify {
 my ($self,$prefix,$name) = @_;
 my $v = ($prefix eq '$#' ? '@' : $prefix) . $name;
-return $name if !$prefix || $name =~ /::/;
+if ($prefix eq "") {
+   $name .= "::" if $name =~ /(?:\ACORE::[^:]*|::)\z/;
+   return $name;
+}
+return $name if $name =~ /::/;
 return $self->{'curstash'}.'::'. $name
if
$name =~ /^(?!\d)\w/ # alphabetic
 && $v!~ /^\$[ab]\z/ # not $a or $b
+&& $v =~ /\A[\$\@\%]/   # scalar, array, or hash
 && !$globalnames{$name} # not a global name
 && $self->{hints} & $strict_bits{vars}  # strict vars
 && !$self->lex_in_scope($v,1)   # no "our"
@@ -4052,7 +4056,7 @@ sub pp_gv {
 my $self = shift;
 my($op, $cx) = @_;
 my $gv = $self->gv_or_padgv($op);
-return $self->gv_name($gv);
+return $self->maybe_qualify("", $self->gv_name($gv));
 }
 
 sub pp_aelemfast_lex {
@@ -4089,7 +4093,8 @@ sub rv2x {
 }
 my $kid = $op->first;
 if ($kid->name eq "gv") {
-   return $self->stash_variable($type, $self->deparse($kid, 0), $cx);
+   return $self->stash_variable($type,
+   $self->gv_name($self->gv_or_padgv($kid)), $cx);
 } elsif (is_scalar $kid) {
my $str = $self->deparse($kid, 0);
if ($str =~ /^\$([^\w\d])\z/) {
@@ -4572,6 +4577,7 @@ sub pp_gelem {
 my $scope = is_scope($glob);
 $glob = $self->deparse($glob, 0);
 $part = $self->deparse($part, 1);
+$glob =~ s/::\z// unless $scope;
 return "*" . ($scope ? "{$glob}" : $glob) . "{$part}";
 }
 
@@ -4877,7 +4883,7 @@ sub pp_entersub {
$proto = $cv->PV if $cv->FLAGS & SVf_POK;
}
$simple = 1; # only calls of named functions can be prototyped
-   $kid = $self->deparse($kid, 24);
+   $kid = $self->maybe_qualify("&", $self->gv_name($gv));
my $fq;
# Fully qualify any sub name that conflicts with a lexical.
if ($self->lex_in_scope("&$kid")
diff --git a/lib/B/Deparse.t b/lib/B/Deparse.t
index 63a4a083a5..27d1b3a2c2 100644
--- a/lib/B/Deparse.t
+++ b/lib/B/Deparse.t
@@ -2858,4 +2858,50 @@ $str = 'foo';
 $str =~ tr/\cA//;
 
 # CORE::foo special case in bareword parsing
-print ::CORE::foo $a;
+print $CORE::foo, $CORE::foo::bar;
+print @CORE::foo, @CORE::foo::bar;
+print %CORE::foo, %CORE::foo::bar;
+print $CORE::foo{'a'}, $CORE::foo::bar{'a'};
+print ::foo, ::foo::bar;
+print ::foo(), ::foo::bar();
+print *CORE::foo, *CORE::foo::bar;
+print stat CORE::foo::, stat CORE::foo::bar;
+print CORE::foo:: 1;
+print CORE::foo::bar 2;
+
+# trailing colons on glob names
+no strict 'vars';
+$Foobaz = 1;
+print $foo, $foo::, $foo;
+print @foo, @foo::, @foo;
+print %foo, %foo::, %foo;
+print $foo{'a'}, $foo::{'a'}, $foo{'a'};
+print , ::, ;
+print (), ::(), ();
+print *foo, *foo::, *foo;
+print stat 

[perl.git] branch blead updated. v5.27.5-395-g647672aaa9

2017-11-16 Thread Dave Mitchell
In perl.git, the branch blead has been updated



- Log -
commit 647672aaa908fc8ab61664986252c70fb04f3498
Author: David Mitchell 
Date:   Thu Nov 16 09:32:41 2017 +

clarify the pod for Perl_utf8_length()

It seemed to imply that the bytes making up the char were s..e; they're
actually s..(e-1).

NPD

commit 3f5e95437092ccddc2436cb7a9ec1cad9e1e8f5d
Author: David Mitchell 
Date:   Thu Nov 16 09:23:53 2017 +

expand code comment in perly.y

ASSIGNOP includes mutators like += as well as basic assignment

NPD

---

Summary of changes:
 perly.act |  4 ++--
 perly.h   | 12 +---
 perly.tab |  4 ++--
 perly.y   |  2 +-
 utf8.c|  4 ++--
 5 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/perly.act b/perly.act
index a201902748..610963f005 100644
--- a/perly.act
+++ b/perly.act
@@ -1,6 +1,6 @@
 /* -*- buffer-read-only: t -*-
!!!   DO NOT EDIT THIS FILE   !!!
-   This file is built by ./regen_perly.pl from perly.y.
+   This file is built by regen_perly.pl from perly.y.
Any changes made here will be lost!
  */
 
@@ -1983,6 +1983,6 @@ case 2:
 
 
 /* Generated from:
- * 4667736d3c31a5169bab73c89d70a27dbce5ea4fe7e3c332a236f8a210aafdc2 perly.y
+ * 78f9e1daf948a161b43e7457943b7d91cada7c92c8b941a1c1dbbc23c2c10aa8 perly.y
  * b6fae5748f9bef6db4740aa5e122b84ac5181852d42474d0ecad621fa4253306 
regen_perly.pl
  * ex: set ro: */
diff --git a/perly.h b/perly.h
index eb14b421c7..765d07cab6 100644
--- a/perly.h
+++ b/perly.h
@@ -1,17 +1,17 @@
 /* -*- buffer-read-only: t -*-
!!!   DO NOT EDIT THIS FILE   !!!
-   This file is built by ./regen_perly.pl from perly.y.
+   This file is built by regen_perly.pl from perly.y.
Any changes made here will be lost!
  */
 
 #define PERL_BISON_VERSION  3
 
 #ifdef PERL_CORE
-/* A Bison parser, made by GNU Bison 3.0.4.  */
+/* A Bison parser, made by GNU Bison 3.0.2.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
 
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -160,7 +160,7 @@ S_is_opval_token(int type) {
 #endif /* PERL_IN_TOKE_C */
 #endif /* PERL_CORE */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
+typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
 
@@ -171,8 +171,6 @@ union YYSTYPE
 GV *gvval;
 
 };
-
-typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -183,6 +181,6 @@ int yyparse (void);
 
 
 /* Generated from:
- * 4667736d3c31a5169bab73c89d70a27dbce5ea4fe7e3c332a236f8a210aafdc2 perly.y
+ * 78f9e1daf948a161b43e7457943b7d91cada7c92c8b941a1c1dbbc23c2c10aa8 perly.y
  * b6fae5748f9bef6db4740aa5e122b84ac5181852d42474d0ecad621fa4253306 
regen_perly.pl
  * ex: set ro: */
diff --git a/perly.tab b/perly.tab
index 9ca5ae8916..f4be1fce67 100644
--- a/perly.tab
+++ b/perly.tab
@@ -1,6 +1,6 @@
 /* -*- buffer-read-only: t -*-
!!!   DO NOT EDIT THIS FILE   !!!
-   This file is built by ./regen_perly.pl from perly.y.
+   This file is built by regen_perly.pl from perly.y.
Any changes made here will be lost!
  */
 
@@ -,6 +,6 @@ static const toketypes yy_type_tab[] =
 };
 
 /* Generated from:
- * 4667736d3c31a5169bab73c89d70a27dbce5ea4fe7e3c332a236f8a210aafdc2 perly.y
+ * 78f9e1daf948a161b43e7457943b7d91cada7c92c8b941a1c1dbbc23c2c10aa8 perly.y
  * b6fae5748f9bef6db4740aa5e122b84ac5181852d42474d0ecad621fa4253306 
regen_perly.pl
  * ex: set ro: */
diff --git a/perly.y b/perly.y
index 0a7c30c042..8f3e303af1 100644
--- a/perly.y
+++ b/perly.y
@@ -962,7 +962,7 @@ subscripted:gelem '{' expr ';' '}'/* 
*main::{something} */
 ;
 
 /* Binary operators between terms */
-termbinop: term ASSIGNOP term /* $x = $y */
+termbinop: term ASSIGNOP term /* $x = $y, $x += $y */
{ $$ = newASSIGNOP(OPf_STACKED, $1, $2, $3); }
|   term POWOP term/* $x ** $y */
{ $$ = newBINOP($2, 0, scalar($1), scalar($3)); }
diff --git a/utf8.c b/utf8.c
index b731780fe4..31b7db7c42 100644
--- a/utf8.c
+++ b/utf8.c
@@ -2005,8 +2005,8 @@ Perl_utf8_to_uvuni_buf(pTHX_ const U8 *s, const U8 *send, 
STRLEN *retlen)
 =for apidoc utf8_length
 
 Return the length of the UTF-8 char encoded string C in characters.
-Stops at C (inclusive).  If C s> or if the scan would end
-up past C, croaks.
+Stops at C (i.e. the C<*e> byte does not form part of the