summaryrefslogtreecommitdiff
path: root/Src/builtin.c
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2001-04-20 06:13:35 +0000
committerBart Schaefer <barts@users.sourceforge.net>2001-04-20 06:13:35 +0000
commit220ad9aa2310047d88c06e59fc70e649f33d8396 (patch)
tree15eaf6cd4c48bfe8c2e831db6ce9437cd901a17c /Src/builtin.c
parent585c21a3935fc7dd8b8ace4d81c1bff98dec2658 (diff)
downloadzsh-220ad9aa2310047d88c06e59fc70e649f33d8396.tar.gz
zsh-220ad9aa2310047d88c06e59fc70e649f33d8396.zip
Parameter repairs, mostly for subscripting.
Diffstat (limited to 'Src/builtin.c')
-rw-r--r--Src/builtin.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index 627a3b82c..0f02ae0a9 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -1690,8 +1690,8 @@ typeset_single(char *cname, char *pname, Param pm, int func,
delenv(pm->env);
pm->env = NULL;
}
- if (value)
- setsparam(pname, ztrdup(value));
+ if (value && !(pm = setsparam(pname, ztrdup(value))))
+ return 0;
} else if (value) {
zwarnnam(cname, "can't assign new value for array %s", pname, 0);
return NULL;
@@ -1807,9 +1807,10 @@ typeset_single(char *cname, char *pname, Param pm, int func,
pm->level = keeplocal;
else if (on & PM_LOCAL)
pm->level = locallevel;
- if (value && !(pm->flags & (PM_ARRAY|PM_HASHED)))
- setsparam(pname, ztrdup(value));
- else if (newspecial && !(pm->old->flags & PM_NORESTORE)) {
+ if (value && !(pm->flags & (PM_ARRAY|PM_HASHED))) {
+ if (!(pm = setsparam(pname, ztrdup(value))))
+ return 0;
+ } else if (newspecial && !(pm->old->flags & PM_NORESTORE)) {
/*
* We need to use the special setting function to re-initialise
* the special parameter to empty.
@@ -2061,12 +2062,6 @@ bin_typeset(char *name, char **argv, char *ops, int func)
/* Take arguments literally. Don't glob */
while ((asg = getasg(*argv++))) {
- /* check if argument is a valid identifier */
- if (!isident(asg->name)) {
- zerr("not an identifier: %s", asg->name, 0);
- returnval = 1;
- continue;
- }
if (!typeset_single(name, asg->name,
(Param) (paramtab == realparamtab ?
gethashnode2(paramtab, asg->name) :