nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit 8993c363666390d9a4ce677a57b358217753d1b8
parent 5c51d4ea46416e2290f98b7aeba64eb09c54bd37
Author: Benno Schulenberg <bensberg@justemail.net>
Date:   Mon, 10 Apr 2017 19:25:40 +0200

tweaks: reduce the number of additions that actual_x() performs

Replace them by a single subtraction.

Diffstat:
Msrc/utils.c | 9++++-----
1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/utils.c b/src/utils.c @@ -392,10 +392,10 @@ size_t xplustabs(void) * not overshoot the given column. */ size_t actual_x(const char *text, size_t column) { - size_t index = 0; - /* The index in text, returned. */ + const char *start = text; + /* From where we start walking through the text. */ size_t width = 0; - /* The screen display width to text[index], in columns. */ + /* The current accumulated span, in columns. */ while (*text != '\0') { int charlen = parse_mbchar(text, NULL, &width); @@ -403,11 +403,10 @@ size_t actual_x(const char *text, size_t column) if (width > column) break; - index += charlen; text += charlen; } - return index; + return (text - start); } /* A strnlen() with tabs and multicolumn characters factored in: