about summary refs log tree commit diff
path: root/Src/builtin.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2001-03-29 10:52:15 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2001-03-29 10:52:15 +0000
commit3278ad8490ce04f5178e8873661a369f34d04531 (patch)
tree9ad62a90dd4a228082e948e66043d7c9549675a7 /Src/builtin.c
parent32f8d43b61e357d38a3bf4f6a5bf63b2aa547945 (diff)
downloadzsh-3278ad8490ce04f5178e8873661a369f34d04531.tar.gz
zsh-3278ad8490ce04f5178e8873661a369f34d04531.tar.xz
zsh-3278ad8490ce04f5178e8873661a369f34d04531.zip
disallow changing of parameter type
for autoloadable parameter (bug 219459 on Sourceforge).
Diffstat (limited to 'Src/builtin.c')
-rw-r--r--Src/builtin.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index e73a7a452..627a3b82c 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -1628,10 +1628,16 @@ typeset_single(char *cname, char *pname, Param pm, int func,
 	if ((tc = chflags && chflags != (PM_EFLOAT|PM_FFLOAT)))
 	    usepm = 0;
     }
-    if (tc && (pm->flags & PM_SPECIAL)) {
-	zerrnam(cname, "%s: can't change type of a special parameter",
-		pname, 0);
-	return NULL;
+    if (tc){
+	if (pm->flags & PM_SPECIAL) {
+	    zerrnam(cname, "%s: can't change type of a special parameter",
+		    pname, 0);
+	    return NULL;
+	} else if (pm->flags & PM_AUTOLOAD) {
+	    zerrnam(cname, "%s: can't change type of autoloaded parameter",
+		    pname, 0);
+	    return NULL;
+	}
     }
 
     /*