diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2010-03-22 19:46:53 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2010-03-22 19:46:53 +0000 |
commit | b16923b096b7678bbaa3cc28b216049d12563528 (patch) | |
tree | e62c1073528d0ace6717fe47c6b7643f6921dbd6 /Src/Zle/zle_refresh.c | |
parent | 08dec290d4d6558f95df9e22daf3a9940547442a (diff) | |
download | zsh-b16923b096b7678bbaa3cc28b216049d12563528.tar.gz zsh-b16923b096b7678bbaa3cc28b216049d12563528.tar.xz zsh-b16923b096b7678bbaa3cc28b216049d12563528.zip |
27812: display invalid bytes in multibyte characters specially
Diffstat (limited to 'Src/Zle/zle_refresh.c')
-rw-r--r-- | Src/Zle/zle_refresh.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/Src/Zle/zle_refresh.c b/Src/Zle/zle_refresh.c index 8604317f3..352dcf0d6 100644 --- a/Src/Zle/zle_refresh.c +++ b/Src/Zle/zle_refresh.c @@ -1263,7 +1263,11 @@ zrefresh(void) } } #ifdef MULTIBYTE_SUPPORT - else if (iswprint(*t) && (width = WCWIDTH(*t)) > 0) { + else if ( +#ifdef __STDC_ISO_10646__ + !ZSH_INVALID_WCHAR_TEST(*t) && +#endif + iswprint(*t) && (width = WCWIDTH(*t)) > 0) { int ichars; if (width > rpms.sen - rpms.s) { int started = 0; @@ -1367,6 +1371,12 @@ zrefresh(void) wchar_t wc; int started = 0; +#ifdef __STDC_ISO_10646__ + if (ZSH_INVALID_WCHAR_TEST(*t)) { + int c = ZSH_INVALID_WCHAR_TO_INT(*t); + sprintf(dispchars, "<%.02x>", c); + } else +#endif if ((unsigned)*t > 0xffffU) { sprintf(dispchars, "<%.08x>", (unsigned)*t); } else { |