tweaks: reduce the number of additions that actual_x() performs
Replace them by a single subtraction.master
parent
5c51d4ea46
commit
8993c36366
|
@ -392,10 +392,10 @@ size_t xplustabs(void)
|
||||||
* not overshoot the given column. */
|
* not overshoot the given column. */
|
||||||
size_t actual_x(const char *text, size_t column)
|
size_t actual_x(const char *text, size_t column)
|
||||||
{
|
{
|
||||||
size_t index = 0;
|
const char *start = text;
|
||||||
/* The index in text, returned. */
|
/* From where we start walking through the text. */
|
||||||
size_t width = 0;
|
size_t width = 0;
|
||||||
/* The screen display width to text[index], in columns. */
|
/* The current accumulated span, in columns. */
|
||||||
|
|
||||||
while (*text != '\0') {
|
while (*text != '\0') {
|
||||||
int charlen = parse_mbchar(text, NULL, &width);
|
int charlen = parse_mbchar(text, NULL, &width);
|
||||||
|
@ -403,11 +403,10 @@ size_t actual_x(const char *text, size_t column)
|
||||||
if (width > column)
|
if (width > column)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
index += charlen;
|
|
||||||
text += charlen;
|
text += charlen;
|
||||||
}
|
}
|
||||||
|
|
||||||
return index;
|
return (text - start);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A strnlen() with tabs and multicolumn characters factored in:
|
/* A strnlen() with tabs and multicolumn characters factored in:
|
||||||
|
|
Loading…
Reference in New Issue