about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Src/Zle/zle_hist.c29
2 files changed, 18 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 326a44877..9eb3f4523 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2008-04-28  Peter Stephenson  <pws@csr.com>
 
+	* 24890: Matt Wozniski: Src/Zle/zle_hist.c: skip_pos was
+	staying set causing random failures on backtracking in isearch.
+
 	* 24887: Geoff: Src/glob.c: typo.
 
 2008-04-27  Peter Stephenson  <p.w.stephenson@ntlworld.com>
diff --git a/Src/Zle/zle_hist.c b/Src/Zle/zle_hist.c
index bc0598327..bc3cdf634 100644
--- a/Src/Zle/zle_hist.c
+++ b/Src/Zle/zle_hist.c
@@ -1442,20 +1442,21 @@ doisearch(char **args, int dir, int pattern)
 	    if(selectkeymap(invicmdmode() ? "main" : "vicmd", 0))
 		feep = 1;
 	    goto ref;
-	} else if(cmd == Th(z_vibackwarddeletechar) ||
-	    	cmd == Th(z_backwarddeletechar)) {
-	    if (top_spot) {
-		get_isrch_spot(--top_spot, &hl, &pos, &pat_hl, &pat_pos,
-			       &end_pos, &zlemetacs, &sbptr, &dir, &nomatch);
-		patprog = NULL;
-		nosearch = 1;
-	    } else
-		feep = 1;
-	    if (nomatch) {
-		memcpy(ibuf, nomatch == 2 ? INVALID_TEXT : FAILING_TEXT,
-		       BAD_TEXT_LEN);
-		statusline = ibuf;
-		skip_pos = 1;
+       } else if(cmd == Th(z_vibackwarddeletechar) ||
+               cmd == Th(z_backwarddeletechar)) {
+           if (top_spot) {
+               get_isrch_spot(--top_spot, &hl, &pos, &pat_hl, &pat_pos,
+                              &end_pos, &zlemetacs, &sbptr, &dir, &nomatch);
+               patprog = NULL;
+               nosearch = 1;
+               skip_pos = 0;
+           } else
+               feep = 1;
+           if (nomatch) {
+               memcpy(ibuf, nomatch == 2 ? INVALID_TEXT : FAILING_TEXT,
+                      BAD_TEXT_LEN);
+               statusline = ibuf;
+               skip_pos = 1;
 	    }
 	    he = quietgethist(hl);
 	    zt = GETZLETEXT(he);