about summary refs log tree commit diff
path: root/Src/params.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2007-07-25 09:26:51 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2007-07-25 09:26:51 +0000
commit4fab17e62aaa2c0628721df45609e9ba6b17a6bc (patch)
treec809a2b17ed4df33907402bf029f3ee37c93d540 /Src/params.c
parent9084df4dc365412c6c44b0c12f53405859adcbf7 (diff)
downloadzsh-4fab17e62aaa2c0628721df45609e9ba6b17a6bc.tar.gz
zsh-4fab17e62aaa2c0628721df45609e9ba6b17a6bc.tar.xz
zsh-4fab17e62aaa2c0628721df45609e9ba6b17a6bc.zip
23696: x=x; x[-10]=y did bad things
Diffstat (limited to 'Src/params.c')
-rw-r--r--Src/params.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/Src/params.c b/Src/params.c
index 46da87580..a962f850c 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -2076,8 +2076,11 @@ setstrvalue(Value v, char *val)
 	    }
 	    if (v->start > zlen)
 		v->start = zlen;
-	    if (v->end < 0)
+	    if (v->end < 0) {
 		v->end += zlen + 1;
+		if (v->end < 0)
+		    v->end = 0;
+	    }
 	    else if (v->end > zlen)
 		v->end = zlen;
 	    x = (char *) zalloc(v->start + strlen(val) + zlen - v->end + 1);