diff options
-rw-r--r-- | src/nvim/message.c | 18 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
2 files changed, 11 insertions, 9 deletions
diff --git a/src/nvim/message.c b/src/nvim/message.c index 689e8893bd..9d9bed2c1f 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -237,17 +237,19 @@ msg_strtrunc ( * Truncate a string "s" to "buf" with cell width "room". * "s" and "buf" may be equal. */ -void trunc_string(char_u *s, char_u *buf, int room, int buflen) +void trunc_string(char_u *s, char_u *buf, int room_in, int buflen) { - int half; - int len; + size_t room = room_in - 3; // "..." takes 3 chars + size_t half; + size_t len = 0; int e; int i; int n; - room -= 3; + if (room_in < 3) { + room = 0; + } half = room / 2; - len = 0; /* First part: Start of the string. */ for (e = 0; len < half && e < buflen; ++e) { @@ -287,7 +289,7 @@ void trunc_string(char_u *s, char_u *buf, int room, int buflen) // text fits without truncating if (s != buf) { len = STRLEN(s); - if (len >= buflen) { + if (len >= (size_t)buflen) { len = buflen - 1; } len = len - e + 1; @@ -300,8 +302,8 @@ void trunc_string(char_u *s, char_u *buf, int room, int buflen) } else if (e + 3 < buflen) { // set the middle and copy the last part memmove(buf + e, "...", (size_t)3); - len = (int)STRLEN(s + i) + 1; - if (len >= buflen - e - 3) + len = STRLEN(s + i) + 1; + if (len >= (size_t)buflen - e - 3) len = buflen - e - 3 - 1; memmove(buf + e + 3, s + i, len); buf[e + 3 + len - 1] = NUL; diff --git a/src/nvim/version.c b/src/nvim/version.c index abd3b7dfc3..1771e2b95e 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -343,7 +343,7 @@ static int included_patches[] = { 2100, 2099, 2098, - // 2097, + 2097, 2096, 2095, // 2094 NA |