mirror of
https://github.com/tmux/tmux.git
synced 2025-01-26 07:58:55 +00:00
Put the fix back for wcwidth() failing.
This commit is contained in:
parent
967e5f8be3
commit
d73fcfc176
23
utf8.c
23
utf8.c
@ -244,12 +244,25 @@ utf8_width(struct utf8_data *ud, int *width)
|
||||
return (UTF8_ERROR);
|
||||
}
|
||||
*width = wcwidth(wc);
|
||||
if (*width < 0 || *width > 0xff) {
|
||||
log_debug("UTF-8 %.*s, wcwidth() %d", (int)ud->size, ud->data,
|
||||
*width);
|
||||
return (UTF8_ERROR);
|
||||
if (*width >= 0 && *width <= 0xff)
|
||||
return (UTF8_DONE);
|
||||
log_debug("UTF-8 %.*s, wcwidth() %d", (int)ud->size, ud->data, *width);
|
||||
|
||||
#ifndef __OpenBSD__
|
||||
/*
|
||||
* Many platforms (particularly and inevitably OS X) have no width for
|
||||
* relatively common characters (wcwidth() returns -1); assume width 1
|
||||
* in this case. This will be wrong for genuinely nonprintable
|
||||
* characters, but they should be rare. We may pass through stuff that
|
||||
* ideally we would block, but this is no worse than sending the same
|
||||
* to the terminal without tmux.
|
||||
*/
|
||||
if (*width < 0) {
|
||||
*width = 1;
|
||||
return (UTF8_DONE);
|
||||
}
|
||||
return (UTF8_DONE);
|
||||
#endif
|
||||
return (UTF8_ERROR);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user