st

fork of suckless's simple terminal
Index Commits Files Refs README LICENSE
commit 7e61f5e4c514a233250442263b62d887c9e5ca9c
parent 9984ad4ba730b043d064095dca42b490904e38f3
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Mon, 17 Aug 2015 11:25:38 +0200

Do not mark as invalid UTF8 control codes

wcwidth() returns -1 for all the non visible characters, but it doesn't
necessarilly mean that they are incorrect. It only means that they are not
printable.

Diffstat:
Mst.c | 4++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/st.c b/st.c
@@ -2895,15 +2895,15 @@ tputc(Rune u)
     int width, len;
     Glyph *gp;
 
+    control = ISCONTROL(u);
     len = utf8encode(u, c);
-    if ((width = wcwidth(u)) == -1) {
+    if (!control && (width = wcwidth(u)) == -1) {
         memcpy(c, "\357\277\275", 4); /* UTF_INVALID */
         width = 1;
     }
 
     if (IS_SET(MODE_PRINT))
         tprinter(c, len);
-    control = ISCONTROL(u);
 
     /*
      * STR sequence must be checked before anything else