summaryrefslogtreecommitdiff
path: root/Src/Zle/computil.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Zle/computil.c')
-rw-r--r--Src/Zle/computil.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c
index 129119799..709e8f1ab 100644
--- a/Src/Zle/computil.c
+++ b/Src/Zle/computil.c
@@ -623,7 +623,7 @@ parse_cadef(char *nam, char **args)
* stuff twice for such things. */
name = ++p;
*p = (again ? '-' : '+');
- again = 1 - again;
+ again++;
} else {
name = p;
/* If it's a long option skip over the first `-'. */
@@ -767,7 +767,7 @@ parse_cadef(char *nam, char **args)
opt->descr = NULL;
} else
opt->descr = NULL;
- opt->xor = xor;
+ opt->xor = (again == 1 ? zarrdup(xor) : xor);
opt->type = otype;
opt->args = oargs;
opt->num = nopts++;
@@ -783,7 +783,7 @@ parse_cadef(char *nam, char **args)
if (single && name[1] && !name[2])
ret->single[STOUC(name[1])] = opt;
- if (again) {
+ if (again == 1) {
/* Do it all again for `*-...'. */
p = dupstring(*args);
goto rec;