From 2bcb4a5888b1c26ee11bc447cc02b42290c707af Mon Sep 17 00:00:00 2001 From: Tony Cook Date: Mon, 5 Dec 2016 11:48:14 +1100 Subject: [PATCH] (perl #130262) split scalar context stack overflow fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ported to 5.14.1: commit 02c161ef974f8f1efbb5632f741c1164adb6ca75 Author: Tony Cook Date: Mon Dec 5 11:48:14 2016 +1100 (perl #130262) split scalar context stack overflow fix pp_split didn't ensure there was space for its return value in scalar context. Signed-off-by: Petr Písař --- pp.c | 2 +- t/op/split.t | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pp.c b/pp.c index 70345ce..334b353 100644 --- a/pp.c +++ b/pp.c @@ -6259,7 +6259,7 @@ PP(pp_split) } GETTARGET; - PUSHi(iters); + XPUSHi(iters); RETURN; } diff --git a/t/op/split.t b/t/op/split.t index b7846a1..3e08841 100644 --- a/t/op/split.t +++ b/t/op/split.t @@ -7,7 +7,7 @@ BEGIN { set_up_inc('../lib'); } -plan tests => 133; +plan tests => 134; $FS = ':'; @@ -534,3 +534,7 @@ is "@a", '1 2 3', 'assignment to split-to-array (stacked)'; ok eval { $a[0] = 'a'; 1; }, "array split filling AvARRAY: assign 0"; is "@a", "a b", "array split filling AvARRAY: result"; } + +fresh_perl_is(<<'CODE', '', {}, "scalar split stack overflow"); +map{int"";split//.0>60for"0000000000000000"}split// for"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +CODE -- 2.7.4