about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--Src/Zle/computil.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index d518d1a87..19be62766 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2000-05-10  Sven Wischnowsky  <wischnow@zsh.org>
 
+	* 11294: Src/Zle/computil.c: fix for `-+opt' with mutex list
+	
 	* 11292: Completion/Core/_files: update `%p' replacement in _files
 	
 2000-05-09  Bart Schaefer  <schaefer@brasslantern.com>
diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c
index 7f743492a..91149d2d2 100644
--- a/Src/Zle/computil.c
+++ b/Src/Zle/computil.c
@@ -651,7 +651,7 @@ parse_cadef(char *nam, char **args, int multi)
 	    Caopt opt;
 	    Caarg oargs = NULL;
 	    int multi, otype = CAO_NEXT, again = 0;
-	    char *name, *descr, c;
+	    char *name, *descr, c, *againp = NULL;
 
 	    rec:
 
@@ -665,6 +665,7 @@ parse_cadef(char *nam, char **args, int multi)
 		p[2] != '=' && p[2] != '-' && p[2] != '+') {
 		/* It's a -+ or +- definition. We just execute the whole
 		 * stuff twice for such things. */
+		againp = dupstring(p);
 		name = ++p;
 		*p = (again ? '-' : '+');
 		again++;
@@ -838,7 +839,7 @@ parse_cadef(char *nam, char **args, int multi)
 
 	    if (again == 1) {
 		/* Do it all again for `*-...'. */
-		p = dupstring(*args);
+		p = againp;
 		goto rec;
 	    }
 	} else if (*p == '*') {