diff options
author | Robin Houston <robin@cpan.org> | 2005-11-04 15:20:29 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2005-11-04 15:41:21 +0000 |
commit | d7507f7459e6b42ee8cfc80abf2510fc2ff6a5c0 (patch) | |
tree | f65d067e8378f64ad895b29523a7dc15fe8b51df /pp_ctl.c | |
parent | 20fac488e1792684d006c2bb2c54d6cebc9696c0 (diff) | |
download | perl-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.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -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)) { |