summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/Zle/zle_refresh.c12
2 files changed, 17 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 95487b95e..0c1463978 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-05  Peter Stephenson  <p.w.stephenson@ntlworld.com>
+
+	* 24362: Src/Zle/zle_refresh.c: redrawing line with multibyte
+	character first caused later characters not to be redrawn.
+
 2008-01-04  Clint Adams  <clint@zsh.org>
 
 	* 24360: Completion/Unix/Command/_du: fix misspelling of
diff --git a/Src/Zle/zle_refresh.c b/Src/Zle/zle_refresh.c
index 7983c7770..a705f67cf 100644
--- a/Src/Zle/zle_refresh.c
+++ b/Src/Zle/zle_refresh.c
@@ -1055,6 +1055,18 @@ refreshline(int ln)
 	ccs = lpromptw;
     }
 
+#ifdef MULTIBYTE_SUPPORT
+    /*
+     * Realign to a real character after any jiggery pokery at
+     * the start of the line.
+     */
+    while (*nl == WEOF) {
+	nl++, ccs++, vcs++;
+	if (*ol)
+	    ol++;
+    }
+#endif
+
 /* 3: main display loop - write out the buffer using whatever tricks we can */
 
     for (;;) {