about summary refs log tree commit diff
path: root/Src/params.c
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2010-11-03 22:40:33 +0000
committerBart Schaefer <barts@users.sourceforge.net>2010-11-03 22:40:33 +0000
commitad56692b16c3a56236853816ddf38e14de034349 (patch)
treef79a05ac9cfd5a124d15bbae05f62a590da817cf /Src/params.c
parenteff9d597f3be3b4c5c246de38978acc60ee670e1 (diff)
downloadzsh-ad56692b16c3a56236853816ddf38e14de034349.tar.gz
zsh-ad56692b16c3a56236853816ddf38e14de034349.tar.xz
zsh-ad56692b16c3a56236853816ddf38e14de034349.zip
28384: improve error message on assignment to a field of a read-only hash.
CVS ----------------------------------------------------------------------
Diffstat (limited to 'Src/params.c')
-rw-r--r--Src/params.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/Src/params.c b/Src/params.c
index f49a07f1a..7ac33b912 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -2591,8 +2591,15 @@ assignsparam(char *s, char *val, int flags)
 	*ss = '\0';
 	if (!(v = getvalue(&vbuf, &s, 1)))
 	    createparam(t, PM_ARRAY);
-	else
+	else {
+	    if (v->pm->node.flags & PM_READONLY) {
+		zerr("read-only variable: %s", v->pm->node.nam);
+		*ss = '[';
+		zsfree(val);
+		return NULL;
+	    }
 	    flags &= ~ASSPM_WARN_CREATE;
+	}
 	*ss = '[';
 	v = NULL;
     } else {