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.
master
Roberto E. Vargas Caballero 10 years ago
parent 9984ad4ba7
commit 7e61f5e4c5

@ -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

Loading…
Cancel
Save