From: Yitzchak Scott-Thoennes <sthoenna@efn.org>
Date: Mon, 12 Feb 2007 22:13:50 +0000 (-0800)
Subject: Re: substr($megabytes, 30) =
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=3ca3bb6f35492332d8741078a5631986b1e06b9d;p=p5sagit%2Fp5-mst-13.2.git

Re: substr($megabytes, 30) =
From: "Yitzchak Scott-Thoennes" <sthoenna@efn.org>
Message-ID: <1119.63.226.247.186.1171347230.squirrel@63.226.247.186>

p4raw-id: //depot/perl@30762
---

diff --git a/pp.c b/pp.c
index 0cc80e6..34ae75f 100644
--- a/pp.c
+++ b/pp.c
@@ -3014,13 +3014,13 @@ PP(pp_substr)
     I32 pos;
     I32 rem;
     I32 fail;
-    const I32 lvalue = PL_op->op_flags & OPf_MOD || LVRET;
+    const int num_args = PL_op->op_private & 7;
+    const I32 lvalue = num_args <= 3 && ( PL_op->op_flags & OPf_MOD || LVRET );
     const char *tmps;
     const I32 arybase = CopARYBASE_get(PL_curcop);
     SV *repl_sv = NULL;
     const char *repl = NULL;
     STRLEN repl_len;
-    const int num_args = PL_op->op_private & 7;
     bool repl_need_utf8_upgrade = FALSE;
     bool repl_is_utf8 = FALSE;
 
@@ -3115,7 +3115,8 @@ PP(pp_substr)
 	    }
 	}
 
-	sv_setpvn(TARG, tmps, rem);
+	if (! lvalue)
+	    sv_setpvn(TARG, tmps, rem);
 #ifdef USE_LOCALE_COLLATE
 	sv_unmagic(TARG, PERL_MAGIC_collxfrm);
 #endif