From: Yitzchak Scott-Thoennes 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" 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