--- Src/Zle/zle_utils.c 9 Jan 2006 00:29:57 -0000 1.34 +++ Src/Zle/zle_utils.c 9 Jan 2006 01:20:35 -0000 @@ -277,13 +277,13 @@ stringaszleline(char *instr, int incs, i while (ll > 0) { size_t ret = mbrtowc(outptr, inptr, ll, &ps); - /* - * At this point we don't handle either incomplete (-2) or - * invalid (-1) multibyte sequences. Use the current length - * and return. - */ - if (ret == (size_t)-1 || ret == (size_t)-2) - break; + if (ret == (size_t)-1 || ret == (size_t)-2) { + /* Transform invalid character sequences into literal + * question marks, at least for now... */ + *outptr = L'?'; + ret = 1; + memset(&ps, '\0', sizeof ps); + } /* * Careful: converting a wide NUL returns zero, but we