summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Src/Zle/computil.c6
2 files changed, 6 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 2403cec48..a96996ad3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,9 @@
 
 2000-04-17  Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
 
+	* 10782: Src/Zle/computil.c: fix for exclusion lists for -+o
+ 	specifications
+	
 	* 10780: Completion/Base/_default, Completion/Base/_value,
  	Completion/Builtins/_vars_eq, Completion/Builtins/_zstyle,
  	Doc/Zsh/compsys.yo: better completion after `=', everywhere
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;