[perl.git] branch blead updated. v5.27.6-204-g397baf2320

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



- Log -
commit 397baf232086e0a9ad6f881a9614d3dbaea853fc
Author: Zefram 
Date:   Tue Dec 12 06:24:01 2017 +

properly check readpipe()'s argument list

readpipe() wasn't applying context to its argument list, resulting in
readpipe()'s context leaking in, and broken stack discipline when a list
expression was used.  Fixes [perl #4574].

---

Summary of changes:
 op.c|  1 +
 t/op/exec.t | 27 ---
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/op.c b/op.c
index 1d31928882..74de752405 100644
--- a/op.c
+++ b/op.c
@@ -10907,6 +10907,7 @@ Perl_ck_backtick(pTHX_ OP *o)
 OP *newop = NULL;
 OP *sibl;
 PERL_ARGS_ASSERT_CK_BACKTICK;
+o = ck_fun(o);
 /* qx and `` have a null pushmark; CORE::readpipe has only one kid. */
 if (o->op_flags & OPf_KIDS && (sibl = OpSIBLING(cUNOPo->op_first))
  && (gv = gv_override("readpipe",8)))
diff --git a/t/op/exec.t b/t/op/exec.t
index 5a0f7b5601..b55cbda09c 100644
--- a/t/op/exec.t
+++ b/t/op/exec.t
@@ -36,7 +36,7 @@ $ENV{LANGUAGE} = 'C'; # Ditto in GNU.
 my $Is_VMS   = $^O eq 'VMS';
 my $Is_Win32 = $^O eq 'MSWin32';
 
-plan(tests => 29);
+plan(tests => 38);
 
 my $Perl = which_perl();
 
@@ -128,8 +128,29 @@ is( <<~`END`,   "ok\n", '<<~`HEREDOC`' 
);
   END
 
 {
-local $_ = qq($Perl -le "print 'ok'");
-is( readpipe, "ok\n", 'readpipe default argument' );
+sub rpecho { qq($Perl -le "print '$_[0]'") }
+is scalar(readpipe(rpecho("b"))), "b\n",
+   "readpipe with one argument in scalar context";
+is join(",", "a", readpipe(rpecho("b")), "c"), "a,b\n,c",
+   "readpipe with one argument in list context";
+local $_ = rpecho("f");
+is scalar(readpipe), "f\n",
+   "readpipe default argument in scalar context";
+is join(",", "a", readpipe, "c"), "a,f\n,c",
+   "readpipe default argument in list context";
+sub rpechocxt {
+   rpecho(wantarray ? "list" : defined(wantarray) ? "scalar" : "void");
+}
+is scalar(readpipe(rpechocxt())), "scalar\n",
+   "readpipe argument context in scalar context";
+is join(",", "a", readpipe(rpechocxt()), "b"), "a,scalar\n,b",
+   "readpipe argument context in list context";
+foreach my $args ("(\$::p,\$::q)", "((\$::p,\$::q))") {
+   foreach my $lvalue ("my \$r", "my \@r") {
+   eval("$lvalue = readpipe$args if 0");
+   like $@, qr/\AToo many arguments for /;
+   }
+}
 }
 
 package o {

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.6-203-g0165f7b01e

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



- Log -
commit 0165f7b01e9c43629d0c6f4b5eb2e672abeda51a
Author: Zefram 
Date:   Tue Dec 12 03:53:33 2017 +

fix doc about filter subroutines' $_[0]

Filter subroutines established by an @INC callback have always received
a numeric zero as their first argument, not a referencet to the sub
as documented.  Fixes [perl #115754].

---

Summary of changes:
 pod/perlfunc.pod | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod
index 8e3a9079b5..0cf5031c25 100644
--- a/pod/perlfunc.pod
+++ b/pod/perlfunc.pod
@@ -6507,11 +6507,12 @@ subroutine will be called to act as a simple source 
filter, with the
 line as read in L|perlvar/$_>.
 Again, return 1 for each valid line, and 0 after all lines have been
 returned.
+For historical reasons the subroutine will receive a meaningless argument
+(in fact always the numeric value zero) as C<$_[0]>.
 
 =item 4
 
-Optional state for the subroutine.  The state is passed in as C<$_[1]>.  A
-reference to the subroutine itself is passed in as C<$_[0]>.
+Optional state for the subroutine.  The state is passed in as C<$_[1]>.
 
 =back
 

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.6-202-gdd9e86b450

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



- Log -
commit dd9e86b4501b7c8aeba1f5ebda9f8907747c443f
Author: Zefram 
Date:   Tue Dec 12 03:19:26 2017 +

correct detection of arg absence in Data::Dumper

The combined getter/setter methods were mistaking a supplied undef
argument value (of a setter call) for absence of an argument (making it
a getter call).  Fixes [perl #113090].

---

Summary of changes:
 dist/Data-Dumper/Dumper.pm| 42 +--
 dist/Data-Dumper/t/indent.t   |  8 +
 dist/Data-Dumper/t/misc.t | 16 +-
 dist/Data-Dumper/t/purity_deepcopy_maxdepth.t | 17 +--
 dist/Data-Dumper/t/quotekeys.t|  5 ++--
 dist/Data-Dumper/t/terse.t| 33 +++--
 6 files changed, 36 insertions(+), 85 deletions(-)

diff --git a/dist/Data-Dumper/Dumper.pm b/dist/Data-Dumper/Dumper.pm
index 441e97329e..41433fc533 100644
--- a/dist/Data-Dumper/Dumper.pm
+++ b/dist/Data-Dumper/Dumper.pm
@@ -10,7 +10,7 @@
 package Data::Dumper;
 
 BEGIN {
-$VERSION = '2.168'; # Don't forget to set version and release
+$VERSION = '2.169'; # Don't forget to set version and release
 }   # date in POD below!
 
 #$| = 1;
@@ -627,7 +627,7 @@ sub Reset {
 
 sub Indent {
   my($s, $v) = @_;
-  if (defined($v)) {
+  if (@_ >= 2) {
 if ($v == 0) {
   $s->{xpad} = "";
   $s->{sep} = "";
@@ -646,92 +646,92 @@ sub Indent {
 
 sub Trailingcomma {
   my($s, $v) = @_;
-  defined($v) ? (($s->{trailingcomma} = $v), return $s) : $s->{trailingcomma};
+  @_ >= 2 ? (($s->{trailingcomma} = $v), return $s) : $s->{trailingcomma};
 }
 
 sub Pair {
 my($s, $v) = @_;
-defined($v) ? (($s->{pair} = $v), return $s) : $s->{pair};
+@_ >= 2 ? (($s->{pair} = $v), return $s) : $s->{pair};
 }
 
 sub Pad {
   my($s, $v) = @_;
-  defined($v) ? (($s->{pad} = $v), return $s) : $s->{pad};
+  @_ >= 2 ? (($s->{pad} = $v), return $s) : $s->{pad};
 }
 
 sub Varname {
   my($s, $v) = @_;
-  defined($v) ? (($s->{varname} = $v), return $s) : $s->{varname};
+  @_ >= 2 ? (($s->{varname} = $v), return $s) : $s->{varname};
 }
 
 sub Purity {
   my($s, $v) = @_;
-  defined($v) ? (($s->{purity} = $v), return $s) : $s->{purity};
+  @_ >= 2 ? (($s->{purity} = $v), return $s) : $s->{purity};
 }
 
 sub Useqq {
   my($s, $v) = @_;
-  defined($v) ? (($s->{useqq} = $v), return $s) : $s->{useqq};
+  @_ >= 2 ? (($s->{useqq} = $v), return $s) : $s->{useqq};
 }
 
 sub Terse {
   my($s, $v) = @_;
-  defined($v) ? (($s->{terse} = $v), return $s) : $s->{terse};
+  @_ >= 2 ? (($s->{terse} = $v), return $s) : $s->{terse};
 }
 
 sub Freezer {
   my($s, $v) = @_;
-  defined($v) ? (($s->{freezer} = $v), return $s) : $s->{freezer};
+  @_ >= 2 ? (($s->{freezer} = $v), return $s) : $s->{freezer};
 }
 
 sub Toaster {
   my($s, $v) = @_;
-  defined($v) ? (($s->{toaster} = $v), return $s) : $s->{toaster};
+  @_ >= 2 ? (($s->{toaster} = $v), return $s) : $s->{toaster};
 }
 
 sub Deepcopy {
   my($s, $v) = @_;
-  defined($v) ? (($s->{deepcopy} = $v), return $s) : $s->{deepcopy};
+  @_ >= 2 ? (($s->{deepcopy} = $v), return $s) : $s->{deepcopy};
 }
 
 sub Quotekeys {
   my($s, $v) = @_;
-  defined($v) ? (($s->{quotekeys} = $v), return $s) : $s->{quotekeys};
+  @_ >= 2 ? (($s->{quotekeys} = $v), return $s) : $s->{quotekeys};
 }
 
 sub Bless {
   my($s, $v) = @_;
-  defined($v) ? (($s->{'bless'} = $v), return $s) : $s->{'bless'};
+  @_ >= 2 ? (($s->{'bless'} = $v), return $s) : $s->{'bless'};
 }
 
 sub Maxdepth {
   my($s, $v) = @_;
-  defined($v) ? (($s->{'maxdepth'} = $v), return $s) : $s->{'maxdepth'};
+  @_ >= 2 ? (($s->{'maxdepth'} = $v), return $s) : $s->{'maxdepth'};
 }
 
 sub Maxrecurse {
   my($s, $v) = @_;
-  defined($v) ? (($s->{'maxrecurse'} = $v), return $s) : $s->{'maxrecurse'};
+  @_ >= 2 ? (($s->{'maxrecurse'} = $v), return $s) : $s->{'maxrecurse'};
 }
 
 sub Useperl {
   my($s, $v) = @_;
-  defined($v) ? (($s->{'useperl'} = $v), return $s) : $s->{'useperl'};
+  @_ >= 2 ? (($s->{'useperl'} = $v), return $s) : $s->{'useperl'};
 }
 
 sub Sortkeys {
   my($s, $v) = @_;
-  defined($v) ? (($s->{'sortkeys'} = $v), return $s) : $s->{'sortkeys'};
+  @_ >= 2 ? (($s->{'sortkeys'} = $v), return $s) : $s->{'sortkeys'};
 }
 
 sub Deparse {
   my($s, $v) = @_;
-  defined($v) ? (($s->{'deparse'} = $v), return $s) : $s->{'deparse'};
+  @_ >= 2 ? (($s->{'deparse'} = $v), return $s) : $s->{'deparse'};
 }
 
 sub Sparseseen {
   my($s, $v) = @_;
-  defined($v) ? (($s->{'noseen'} = $v), return $s) : $s->{'noseen'};
+  @_ >= 2 ? (($s->{'noseen'} = $v), return $s) : $s->{'noseen'};
 }
 
 # used by qquote below
@@ -1474,7 +1474,7 @@ modify it under the same te

[perl.git] branch blead updated. v5.27.6-201-gf8edfb87c2

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



- Log -
commit f8edfb87c2ebbcbe6d91f1cc4cbd0f085d3b44c1
Author: Karl Williamson 
Date:   Thu Dec 7 18:47:34 2017 -0700

sv.c: White-space only

This outdents some lines that the previous commit removed an enclosing
block of.

commit c58971e910419d745ca5a1e6c474d930af17738a
Author: Karl Williamson 
Date:   Thu Dec 7 18:42:53 2017 -0700

utf8_upgrade_flags_grow(): Use faster variant count

Now that we have a much faster way of counting the characters that would
expand to two bytes when a string is translated into UTF-8, use that,
instead of trying to choose one of two methods.  This simplifies the
code.  Note that the faster method doesn't happen on EBCDIC platforms,
but the simplification is worth the potential loss of being able to
choose methods.

commit 74472cc263121e60f8787f15c2dc2fc910dd8683
Author: Karl Williamson 
Date:   Mon Dec 11 19:13:45 2017 -0700

inline.h: Change extensive comment to a link

I'm thinking the explanation of how the algorithm works  doesn't belong
in the code, so replace it by the commit number so it can be found
quickly.

---

Summary of changes:
 inline.h |  63 +---
 sv.c | 252 +++
 2 files changed, 76 insertions(+), 239 deletions(-)

diff --git a/inline.h b/inline.h
index 26a1b5937e..28bc1f5bf9 100644
--- a/inline.h
+++ b/inline.h
@@ -518,67 +518,8 @@ S_variant_under_utf8_count(const U8* const s, const U8* 
const e)
 }
 
 /* Process per-word as long as we have at least a full word left */
-do {
-
-/* It's easier to look at a 16-bit word size to see how this works.
- * The expression would be:
- *
- *  (((*x & 0x8080) >> 7) * 0x0101) >> 8;
- *
- * Suppose the value of *x is the 16 bits
- *
- *  0by___z___
- *
- * where the 14 bits represented by '_' could be any combination of
- * 0's or 1's (we don't care), and 'y' is the high bit of one byte,
- * and 'z' is the high bit for the other (endianness doesn't
- * matter).  On ASCII platforms a byte is variant if the high bit
- * is set; invariant otherwise.  Thus, our goal, the count of
- * variants in this 2-byte word is
- *
- *  y + z
- *
- * To turn 0by___z___ into (y + z) we mask the intial value
- * with 0x8080 to turn it into
- *
- *  0by000z000
- *
- * Then right shifting by 7 yields
- *
- *  0by000z
- *
- * Viewed as a number, this is
- *
- *  2**8 * y + z
- *
- * We then multiply by 0x0101 (which is = 2**8 + 1), so
- *
- *   (2**8 * y + z) * (2**8 + 1)
- * = (2**8 * y * 2**8) + (z * 2**8) + (2**8 * y * 1) + (z * 1)
- * = (2**16 * y) + (2**8 * (y + z)) + z
- *
- * However (2**16 * y) doesn't fit in a 16-bit word (unless 'y' is
- * zero in which case it is 0), and since this is unsigned
- * multiplication, the C standard says that this component just
- * gets ignored, so we are left with
- *
- * =  2**8 * (y + z) + z
- *
- * We then shift right by 8 bits, which divides by 2**8, and gets
- * rid of the lone 'z', leaving us with
- *
- * =  y + z
- *
- * The same principles apply for longer word sizes.  For 32 bit
- * words we end up with
- *
- * =  2**24 * (w + x + y + z) + (lots of other expressions
- *   below 2**24)
- *
- * with anything above 2**24 having overflowed and been chopped
- * off.  Shifting right by 24 yields (w + x + y + z)
- */
-
+do {/* Commit 03c1e4ab1d6ee9062fb3f94b0ba31db6698724b1 contains an
+   explanation of how this works */
 count += * (PERL_UINTMAX_T *) x) & PERL_VARIANTS_WORD_MASK) >> 
7)
   * PERL_COUNT_MULTIPLIER)
 >> ((PERL_WORDSIZE - 1) * CHARBITS);
diff --git a/sv.c b/sv.c
index a40d0aa5f0..924a7e3058 100644
--- a/sv.c
+++ b/sv.c
@@ -3401,11 +3401,7 @@ if all the bytes are invariant in UTF-8.
 If C has C bit set,
 will C on C if appropriate, else not.
 

[perl.git] branch blead updated. v5.27.6-198-g03c1e4ab1d

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



- Log -
commit 03c1e4ab1d6ee9062fb3f94b0ba31db6698724b1
Author: Karl Williamson 
Date:   Wed Nov 22 22:30:16 2017 -0700

Add variant_under_utf8_count() core function

This function takes a string that isn't encoded in UTF-8 (hence is
assumed to be in Latin1), and counts how many of the bytes therein
would change if it were to be translated into UTF-8.  Each such byte
would occupy two UTF-8 bytes.

This function is useful for calculating the expansion factor precisely
when converting to UTF-8, so as to know how much to malloc.

This function uses a non-obvious method to do the calculations
word-at-a-time, as opposed to the byte-at-a-time method used now, and
hence should be much faster than the current methods.

The performance change in short string lengths is equivocal.  Here is
the result for a single character and a 64-bit word.

  byteswords Ratio %
  ---
 Ir932.0947.098.4
 Dr325.0325.0   100.0
 Dw104.0104.0   100.0
   COND136.0137.099.3
IND 28.0 28.0   100.0

 COND_m  1.0  0.0   Inf
  IND_m  6.0  6.0   100.0

There are some extra instructions executed and an extra branch to check
for and handle the case where we can go word-by-word vs. not.  But the
one cache miss is removed.

The results are essentially the same until we get to being able to
handle a full word.  Some of the extra instructions are to ensure that
if the input is not aligned on a word boundary, that performance doesn't
suffer.

Here's the results for 8-bytes on a 64-bit system.

   byteswords Ratio %
  ---
 Ir974.0955.0   102.0
 Dr332.0325.0   102.2
 Dw104.0104.0   100.0
   COND143.0138.0   103.6
IND 28.0 28.0   100.0

 COND_m  1.0  0.0 Inf
  IND_m  6.0  6.0   100.0

Things keep improving as the strings get longer.  Here's for 24 bytes.

   byteswords Ratio %
  ---
 Ir   1070.0975.0   109.7
 Dr348.0327.0   106.4
 Dw104.0104.0   100.0
   COND159.0140.0   113.6
IND 28.0 28.0   100.0

 COND_m  2.0  0.0 Inf
  IND_m  6.0  6.0   100.0

And 96:

   byteswords Ratio %
  ---
 Ir   1502.0   1065.0   141.0
 Dr420.0336.0   125.0
 Dw104.0104.0   100.0
   COND231.0149.0   155.0
IND 28.0 28.0   100.0

 COND_m  2.0  1.0   200.0
  IND_m  6.0  6.0   100.0

And 10,000

   byteswords Ratio %
  ---
 Ir  60926.0  13445.0   453.1
 Dr  10324.0   1574.0   655.9
 Dw104.0104.0   100.0
   COND  10135.0   1387.0   730.7
IND 28.0 28.0   100.0

 COND_m  2.0  1.0   200.0
  IND_m  6.0  6.0   100.0

I found this trick on the internet many years ago, but I can't seem to
find it again to give them credit.

commit 099e59a45fd0c4d6657bf384e0539691eb7b1f24
Author: Karl Williamson 
Date:   Mon Dec 11 18:17:29 2017 -0700

is_utf8_invariant_string(): small speed optimization

This adds a few shifing, masking, and integer arithmetic operations to a
conditional which in return makes sure that one branch is taken only
when it is going to do some good, avoiding a conditional in it.

commit 16ef5c6e5c4a7d414ca7ef46cff9f8015fcd9079
Author: Karl Williamson 
Date:   Mon Dec 11 18:26:52 2017 -0700

APItest/t/handy_base.pl: Avoid uninitialized warning

This .pl in /t is generally called from a test file in that directory,
but if run by hand, this commit makes sure things are properly
initialized

---

Summary of changes:
 embed.fnc  |   4 +
 embed.h|   3 +
 ext/XS-APItest/APItest.xs  |  14 +++-
 ext/XS-APItest/t/handy_base.pl |   1 +
 ext/XS-APItest/t/utf8.t|  57 ++
 inline.h   | 172 +++--
 proto.h|   9 +++
 7 files changed, 252 insertions(+), 8 deletions(-)

diff --git a/embed.fnc b/embed.fnc
index bfbc63af5a..ad4df86324 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -782,6 +782,10 @@ AndmoR |bool   |is_utf8

[perl.git] branch zefram/deprecate_some_fake_import created. v5.27.6-196-gca0f6c3b73

2017-12-11 Thread Zefram
In perl.git, the branch zefram/deprecate_some_fake_import has been created



at  ca0f6c3b7340b77fc40d65a881c53c9c40be4dde (commit)

- Log -
commit ca0f6c3b7340b77fc40d65a881c53c9c40be4dde
Author: Zefram 
Date:   Tue Dec 12 01:16:59 2017 +

deprecate worst uses of fake import/unimport

Calling a non-existent "import" method with arguments, or calling a
non-existent "unimport" method at all, is deprecated.  The xsub CVs
generated in gv_fetchmethod_pvn_flags() now have custom bodies that
generate the deprecation warnings, and UNIVERSAL::import() imitates that.
A handful of faulty uses of non-existent "import" methods, shown up by
the deprecation, are rectified.  [perl #132425]

---

-- 
Perl5 Master Repository


[perl.git] branch tonyc/127743-cperl-storable-fixes updated. v5.27.6-182-gaa060bea5c

2017-12-11 Thread Tony Cook
In perl.git, the branch tonyc/127743-cperl-storable-fixes has been updated



- Log -
commit aa060bea5c3eb0bee9f357e611932c8c882ce7dd
Author: Tony Cook 
Date:   Mon Dec 11 23:02:47 2017 +0100

(perl #25933) always rethrow exceptions thrown through or by the XS 
implementation

Also, preserve any references thrown.

Such references could be thrown by STORABLE_freeze, STORABLE_thaw or
STORABLE_attach implementations.

Several of the wrappers in Storable.pm had code similar to:

  eval { ... };
  logcroak $@ if $@ =~ s/\.?\n$/,/;

with $@ discarded if the condition failed.

This lead to two problems:

- exceptions not ending in "\n" (which is just references without
  string overloading, or with overloading but that didn't return a
  string ending in "\n") would not be rethrown.

- thrown references that did happen to have overloading that returned
  "\n" would be converted into strings.

This behaviour appears to have been present since the initial release
of Storable.

commit 7e1adb0ccd5ca60820a340ba0593c013220ee49d
Author: Tony Cook 
Date:   Mon Dec 11 03:52:05 2017 +0100

fix type typo

commit 62de7af9916b2f620c3b98f839fd6a8ac9ecb5ad
Author: Tony Cook 
Date:   Mon Dec 11 00:53:35 2017 +0100

(perl #127743) improve performance in -DDEBUGGING builds

The changes imported from cperl included a change to enable Storable's 
debugging
output mechanism for -DDEBUGGING builds.

When built with debugging output, Storable's TRACEME() macro fetched
the $Storable::DEBUGME global and checked its truth, this
significantly slowed down Storable, especially noticable for dumps
with large numbers of objects.

I added a cached traceme value to the Storable context object and
modified TRACEME() to used that instead.  A few TRACEME()'s that are
called before the context object is available have been replaced with
calls to TRACEMD(), a new macro that does what TRACEME() did before.

---

Summary of changes:
 dist/Storable/Storable.xs | 72 +--
 dist/Storable/__Storable__.pm | 25 ---
 dist/Storable/t/blessed.t | 61 ++--
 3 files changed, 135 insertions(+), 23 deletions(-)

diff --git a/dist/Storable/Storable.xs b/dist/Storable/Storable.xs
index 1714d5cb50..81d699b9b1 100644
--- a/dist/Storable/Storable.xs
+++ b/dist/Storable/Storable.xs
@@ -111,16 +111,35 @@
 #endif
 
 /*
- * TRACEME() will only output things when the $Storable::DEBUGME is true.
+ * TRACEME() will only output things when the $Storable::DEBUGME is true,
+ * using the value traceme cached in the context.
+ *
+ *
+ * TRACEMED() directly looks at the variable, for use before traceme has been
+ * updated.
  */
 
 #define TRACEME(x)\
+STMT_START { \
+if (cxt->traceme)\
+{ PerlIO_stdoutf x; PerlIO_stdoutf("\n"); }   \
+} STMT_END
+
+#define TRACEMED(x)   \
 STMT_START {  \
 if (SvTRUE(get_sv("Storable::DEBUGME", GV_ADD)))  \
 { PerlIO_stdoutf x; PerlIO_stdoutf("\n"); }   \
 } STMT_END
+
+#define INIT_TRACEME   \
+STMT_START {   \
+   cxt->traceme = SvTRUE(get_sv("Storable::DEBUGME", GV_ADD)); \
+} STMT_END
+
 #else
 #define TRACEME(x)
+#define TRACEMED(x)
+#define INIT_TRACEME
 #endif /* DEBUGME */
 
 #ifdef DASSERT
@@ -403,6 +422,9 @@ typedef struct stcxt {
 int in_retrieve_overloaded; /* performance hack for retrieving overloaded 
objects */
 int flags; /* controls whether to bless or tie objects */
 U16 recur_depth;   /* avoid stack overflows RT #97526 */
+#ifdef DEBUGME
+int traceme;/* TRACEME() produces output */
+#endif
 } stcxt_t;
 
 /* Note: We dont count nested scalars. This will have to count all refs
@@ -1525,7 +1547,7 @@ static SV *mbuf2sv(pTHX);
 static void init_perinterp(pTHX)
 {
 INIT_STCXT;
-
+INIT_TRACEME;
 cxt->netorder = 0; /* true if network order used */
 cxt->forgive_me = -1;  /* whether to be forgiving... */
 cxt->accept_future_minor = -1; /* would otherwise occur too late */
@@ -1557,6 +1579,8 @@ static void init_store_context(pTHX_
 int optype,
 int network_order)
 {
+INIT_TRACEME;
+
 TRACEME(("init_store_context"));
 
 cxt->netorder = ne

[perl.git] branch blead updated. v5.27.6-195-g9b91093d3e

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



- Log -
commit 9b91093d3e74d13a6e4f67269a587f4ab397998a
Author: Zefram 
Date:   Mon Dec 11 21:25:38 2017 +

document rules for identifying smoke-me branches

---

Summary of changes:
 pod/perlgit.pod | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/pod/perlgit.pod b/pod/perlgit.pod
index d8d75c1cb0..000d6ac0d4 100644
--- a/pod/perlgit.pod
+++ b/pod/perlgit.pod
@@ -852,6 +852,9 @@ on other OSes test the change before you commit it to blead.
 Fortunately, there is a way to get your change smoke-tested on various
 OSes: push it to a "smoke-me" branch and wait for certain automated
 smoke-testers to report the results from their OSes.
+A "smoke-me" branch is identified by the branch name: specifically, as
+seen on perl5.git.perl.org it must be a local branch whose first name
+component is precisely C.
 
 The procedure for doing this is roughly as follows (using the example of
 of tonyc's smoke-me branch called win32stat):

-- 
Perl5 Master Repository


[perl.git] branch smoke-me/zefram/exec_args created. v5.27.6-150-g1cd4fed954

2017-12-11 Thread Zefram
In perl.git, the branch smoke-me/zefram/exec_args has been created



at  1cd4fed954752f6b49e30758b5ab8057337b5674 (commit)

- Log -
---

-- 
Perl5 Master Repository


[perl.git] branch zefram/smoke-me/exec_args deleted. v5.27.6-150-g1cd4fed954

2017-12-11 Thread Zefram
In perl.git, the branch zefram/smoke-me/exec_args has been deleted



   was  1cd4fed954752f6b49e30758b5ab8057337b5674

- Log -
1cd4fed954752f6b49e30758b5ab8057337b5674 make exec keep its argument list more 
reliably
---

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.6-194-g2ae26641a3

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



- Log -
commit 2ae26641a3d7283c7b9df71fd2a4bb202a1bcb36
Author: Father Chrysostomos 
Date:   Mon Dec 11 10:01:35 2017 -0800

fakesdio.h: Typo

---

Summary of changes:
 fakesdio.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fakesdio.h b/fakesdio.h
index 928d37b90a..b8f972a0a9 100644
--- a/fakesdio.h
+++ b/fakesdio.h
@@ -1,4 +1,4 @@
-/*fakestdio.h
+/*fakesdio.h
  *
  *Copyright (C) 2000, by Larry Wall and others
  *

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.6-193-g765da30014

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



- Log -
commit 765da30014382043124f566a8643a249ff4f3522
Author: Father Chrysostomos 
Date:   Mon Dec 11 09:59:47 2017 -0800

APItest.xs: shenanigans to avoid warnings

We have an unresolved issue that #include "fakesdio.h" causes one
of the typemaps to make assignments between different pointer types,
something we can’t fix straightforwardly with casts, since adding
casts to the default typemap (which we are trying to test) may
suppress real problems in production.  This is a temporary plaster
till we figure out what to do.

commit d85bc99c9c9a958c5899375414439c680be5e5ac
Author: Father Chrysostomos 
Date:   Mon Dec 11 09:56:29 2017 -0800

svleak.t: Disable crashing test

till we get to the bottom of it

---

Summary of changes:
 ext/XS-APItest/APItest.xs | 6 ++
 t/op/svleak.t | 5 -
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/ext/XS-APItest/APItest.xs b/ext/XS-APItest/APItest.xs
index 5dec99eb6b..a2d5d697b6 100644
--- a/ext/XS-APItest/APItest.xs
+++ b/ext/XS-APItest/APItest.xs
@@ -9,6 +9,9 @@
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
+
+typedef FILE NativeFile;
+
 #include "fakesdio.h"   /* Causes us to use PerlIO below */
 
 typedef SV *SVREF;
@@ -4313,6 +4316,9 @@ PerlIO_stdout()
 InputStream
 PerlIO_stdin()
 
+#undef FILE
+#define FILE NativeFile
+
 FILE *
 PerlIO_exportFILE(PerlIO *f, const char *mode)
 
diff --git a/t/op/svleak.t b/t/op/svleak.t
index b07e3f8e99..5d99fddcbe 100644
--- a/t/op/svleak.t
+++ b/t/op/svleak.t
@@ -602,5 +602,8 @@ EOF
 leak 2,0,\&XS::APItest::PerlIO_stderr,'T_INOUT in default typemap';
 leak 2,0,\&XS::APItest::PerlIO_stdin, 'T_IN in default typemap';
 leak 2,0,\&XS::APItest::PerlIO_stdout,'T_OUT in default typemap';
-leak 2,1,sub{XS::APItest::PerlIO_exportFILE(*STDIN,"");0},
+SKIP: {
+ skip "for now; crashes";
+ leak 2,1,sub{XS::APItest::PerlIO_exportFILE(*STDIN,"");0},
   'T_STDIO in default typemap';
+}

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.6-191-gff79a4074d

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



- Log -
commit ff79a4074dc27785a21291eb35036e3c0eb121f8
Author: Dagfinn Ilmari Mannsåker 
Date:   Mon Dec 11 12:31:30 2017 +

Note schedule for $[ removal in perlvar

---

Summary of changes:
 pod/perlvar.pod | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pod/perlvar.pod b/pod/perlvar.pod
index 257fdb6e1a..6969314cdc 100644
--- a/pod/perlvar.pod
+++ b/pod/perlvar.pod
@@ -2363,6 +2363,8 @@ Mnemonic: [ begins subscripts.
 
 Deprecated in Perl v5.12.0.
 
+Assigning a non-zero value be fatal in Perl v5.30.0.
+
 =back
 
 =cut

-- 
Perl5 Master Repository


[perl.git] branch blead updated. v5.27.6-190-g62c1220c10

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



- Log -
commit 62c1220c1056368fb1b2bc13a333ae676d5092b1
Author: David Mitchell 
Date:   Mon Dec 11 12:02:57 2017 +

S_maybe_multiconcat(): use OPpCONCAT_NESTED flag

RT # 132554

I recently added the OPpCONCAT_NESTED flag to distinguish between

$a .= ...

and
$a . $b . $c

where the latter has been optimised into

($a . $b) .= $c

Update S_maybe_multiconcat() to recognise this new flag.
It was failing an assert on this code:

./perl -e 'H.-w.w.=0'

---

Summary of changes:
 op.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/op.c b/op.c
index 0f7ee6269b..1d31928882 100644
--- a/op.c
+++ b/op.c
@@ -2715,7 +2715,9 @@ S_maybe_multiconcat(pTHX_ OP *o)
 }
 else if (   topop->op_type == OP_CONCAT
  && (topop->op_flags & OPf_STACKED)
- && (cUNOPo->op_first->op_flags & OPf_MOD))
+ && (cUNOPo->op_first->op_flags & OPf_MOD)
+ && (!(topop->op_private & OPpCONCAT_NESTED))
+)
 {
 /* expr .= . */
 

-- 
Perl5 Master Repository