summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
authorRobin Houston <robin@cpan.org>2005-11-04 15:20:29 +0000
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2005-11-04 15:41:21 +0000
commitd7507f7459e6b42ee8cfc80abf2510fc2ff6a5c0 (patch)
treef65d067e8378f64ad895b29523a7dc15fe8b51df /pp_ctl.c
parent20fac488e1792684d006c2bb2c54d6cebc9696c0 (diff)
downloadperl-d7507f7459e6b42ee8cfc80abf2510fc2ff6a5c0.tar.gz
Re: [PATCH] sort/multicall patch
Message-ID: <20051104152029.GA17169@rpc142.cs.man.ac.uk> p4raw-id: //depot/perl@25992
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index d5bb802bdc..cfefefdaf2 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1949,6 +1949,8 @@ PP(pp_return)
* sort block, which is a CXt_NULL
* not a CXt_SUB */
dounwind(0);
+ PL_stack_base[1] = *PL_stack_sp;
+ PL_stack_sp = PL_stack_base + 1;
return 0;
}
else
@@ -1957,8 +1959,16 @@ PP(pp_return)
if (cxix < cxstack_ix)
dounwind(cxix);
- if (CxMULTICALL(&cxstack[cxix]))
+ if (CxMULTICALL(&cxstack[cxix])) {
+ gimme = cxstack[cxix].blk_gimme;
+ if (gimme == G_VOID)
+ PL_stack_sp = PL_stack_base;
+ else if (gimme == G_SCALAR) {
+ PL_stack_base[1] = *PL_stack_sp;
+ PL_stack_sp = PL_stack_base + 1;
+ }
return 0;
+ }
POPBLOCK(cx,newpm);
switch (CxTYPE(cx)) {