From: Rick Delaney Date: Tue, 20 Jul 2004 16:53:54 +0000 (-0400) Subject: Re: [perl #30688] Empty slice arg with ($;$) prototype X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=04ab2c8763f1a01bee803d3ef65890b775f28c21;p=p5sagit%2Fp5-mst-13.2.git Re: [perl #30688] Empty slice arg with ($;$) prototype Message-ID: <20040720205353.GA970@biff.bort.ca> p4raw-id: //depot/perl@23145 --- diff --git a/pp.c b/pp.c index 51cd5d4..2b38805 100644 --- a/pp.c +++ b/pp.c @@ -3749,7 +3749,7 @@ PP(pp_aslice) } if (GIMME != G_ARRAY) { MARK = ORIGMARK; - *++MARK = *SP; + *++MARK = SP > ORIGMARK ? *SP : &PL_sv_undef; SP = MARK; } RETURN; @@ -3949,7 +3949,7 @@ PP(pp_hslice) } if (GIMME != G_ARRAY) { MARK = ORIGMARK; - *++MARK = *SP; + *++MARK = SP > ORIGMARK ? *SP : &PL_sv_undef; SP = MARK; } RETURN; diff --git a/t/op/list.t b/t/op/list.t index 4d7a2d5..89ccf02 100755 --- a/t/op/list.t +++ b/t/op/list.t @@ -1,6 +1,6 @@ #!./perl -print "1..28\n"; +print "1..30\n"; @foo = (1, 2, 3, 4); if ($foo[0] == 1 && $foo[3] == 4) {print "ok 1\n";} else {print "not ok 1\n";} @@ -86,4 +86,13 @@ for ($x = 0; $x < 3; $x++) { my @c = (0, undef, undef, 3)[1, 2]; print "not " unless @b == @c and @c == 2; print "ok 28\n"; + + @b = (29, scalar @c[()]); + print "not " if join(':',@b) ne '29:'; + print "ok 29\n"; + + my %h = (a => 1); + @b = (30, scalar @h{()}); + print "not " if join(':',@b) ne '30:'; + print "ok 30\n"; }