mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 03:18:16 +00:00
fix(tui): use buflen to calculate remaining buffer size (#26942)
buf is a pointer argument, not a local char array, so sizeof(buf) is just the size of a pointer type on the platform. This is always an incorrect value, but on 32-bit platforms it actually has an impact, since sizeof(buf) is just 4 and causes the buffer to get truncated.
This commit is contained in:
@@ -237,13 +237,13 @@ static size_t handle_termkey_modifiers(TermKeyKey *key, char *buf, size_t buflen
|
|||||||
{
|
{
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
if (key->modifiers & TERMKEY_KEYMOD_SHIFT) { // Shift
|
if (key->modifiers & TERMKEY_KEYMOD_SHIFT) { // Shift
|
||||||
len += (size_t)snprintf(buf + len, sizeof(buf) - len, "S-");
|
len += (size_t)snprintf(buf + len, buflen - len, "S-");
|
||||||
}
|
}
|
||||||
if (key->modifiers & TERMKEY_KEYMOD_ALT) { // Alt
|
if (key->modifiers & TERMKEY_KEYMOD_ALT) { // Alt
|
||||||
len += (size_t)snprintf(buf + len, sizeof(buf) - len, "A-");
|
len += (size_t)snprintf(buf + len, buflen - len, "A-");
|
||||||
}
|
}
|
||||||
if (key->modifiers & TERMKEY_KEYMOD_CTRL) { // Ctrl
|
if (key->modifiers & TERMKEY_KEYMOD_CTRL) { // Ctrl
|
||||||
len += (size_t)snprintf(buf + len, sizeof(buf) - len, "C-");
|
len += (size_t)snprintf(buf + len, buflen - len, "C-");
|
||||||
}
|
}
|
||||||
assert(len < buflen);
|
assert(len < buflen);
|
||||||
return len;
|
return len;
|
||||||
|
Reference in New Issue
Block a user