about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Src/Zle/zle_misc.c5
2 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index db594cc5d..79fb2c779 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,10 @@
 
 2015-09-12  Barton E. Schaefer  <schaefer@zsh.org>
 
+	* 36525: Src/Zle/zle_misc.c: revert only the selfinsert() bit of
+	36496 because selfinsert() may be called with incomplete wide
+	character processing from places other than getkeymapcmd()
+
 	* unposted: Functions/Zle/bracketed-paste-magic: revert 36483 as
 	multibyte is now handled by "zle .read-command"; adapt to new
 	default behavior of zle_highlight for paste
diff --git a/Src/Zle/zle_misc.c b/Src/Zle/zle_misc.c
index 297dc4ca8..0483f758d 100644
--- a/Src/Zle/zle_misc.c
+++ b/Src/Zle/zle_misc.c
@@ -115,7 +115,10 @@ selfinsert(UNUSED(char **args))
     ZLE_CHAR_T tmp;
 
 #ifdef MULTIBYTE_SUPPORT
-    DPUTS(!lastchar_wide_valid, "keybuf did not read full wide character");
+    /* may be redundant with getkeymapcmd(), but other widgets call here too */
+    if (!lastchar_wide_valid)
+	if (getrestchar(lastchar, NULL, NULL) == WEOF)
+	    return 1;
 #endif
     tmp = LASTFULLCHAR;
     doinsert(&tmp, 1);