From 0159efd950264331befe3ebead1a80ab559bba20 Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Wed, 22 Jun 2011 08:32:36 -0700 Subject: [PATCH 1/1] Remove the CvLVALUE check from pp_leavesub As of bb3abb0, this can no longer happen. --- pp_hot.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/pp_hot.c b/pp_hot.c index 1b1117e..e9a34fd 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -2672,6 +2672,7 @@ PP(pp_leavesublv) POPBLOCK(cx,newpm); cxstack_ix++; /* temporarily protect top context */ + assert(CvLVALUE(cx->blk_sub.cv)); TAINT_NOT; @@ -2703,17 +2704,6 @@ PP(pp_leavesublv) } } else if (CxLVAL(cx)) { /* Leave it as it is if we can. */ - /* Here we go for robustness, not for speed, so we change all - * the refcounts so the caller gets a live guy. Cannot set - * TEMP, so sv_2mortal is out of question. */ - if (!CvLVALUE(cx->blk_sub.cv)) { - LEAVE; - cxstack_ix--; - POPSUB(cx,sv); - PL_curpm = newpm; - LEAVESUB(sv); - DIE(aTHX_ "Can't modify non-lvalue subroutine call"); - } if (gimme == G_SCALAR) { MARK = newsp + 1; EXTEND_MORTAL(1); -- 1.8.3.1