mirror of
https://github.com/tmux/tmux.git
synced 2024-11-17 18:08:51 +00:00
Restore code to handle wcwidth failure so that unknown codepoints still
do the most likely right thing. GitHub issue 3427, patch based on an diff from Jesse Luehrs in GitHub issue 3003.
This commit is contained in:
parent
cb51942669
commit
7ced0a03d2
11
utf8.c
11
utf8.c
@ -226,9 +226,16 @@ utf8_width(struct utf8_data *ud, int *width)
|
|||||||
case 0:
|
case 0:
|
||||||
return (UTF8_ERROR);
|
return (UTF8_ERROR);
|
||||||
}
|
}
|
||||||
|
log_debug("UTF-8 %.*s is %08X", (int)ud->size, ud->data, (u_int)wc);
|
||||||
*width = wcwidth(wc);
|
*width = wcwidth(wc);
|
||||||
log_debug("UTF-8 %.*s %#x, wcwidth() %d", (int)ud->size, ud->data,
|
log_debug("wcwidth(%08X) returned %d", (u_int)wc, *width);
|
||||||
(u_int)wc, *width);
|
if (*width < 0) {
|
||||||
|
/*
|
||||||
|
* C1 control characters are nonprintable, so they are always
|
||||||
|
* zero width.
|
||||||
|
*/
|
||||||
|
*width = (wc >= 0x80 && wc <= 0x9f) ? 0 : 1;
|
||||||
|
}
|
||||||
if (*width >= 0 && *width <= 0xff)
|
if (*width >= 0 && *width <= 0xff)
|
||||||
return (UTF8_DONE);
|
return (UTF8_DONE);
|
||||||
return (UTF8_ERROR);
|
return (UTF8_ERROR);
|
||||||
|
Loading…
Reference in New Issue
Block a user