aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/vim.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-11-01 17:34:19 +0800
committerGitHub <noreply@github.com>2024-11-01 09:34:19 +0000
commitcbd8b2c1622e0c1cb4d38b65730e259eb6c100df (patch)
tree3300c416bd92aa912fcb2084853130d1f758331e /src/nvim/api/vim.c
parent9b357e30fdd0a575480182872331fdb87e9cc331 (diff)
downloadrneovim-cbd8b2c1622e0c1cb4d38b65730e259eb6c100df.tar.gz
rneovim-cbd8b2c1622e0c1cb4d38b65730e259eb6c100df.tar.bz2
rneovim-cbd8b2c1622e0c1cb4d38b65730e259eb6c100df.zip
vim-patch:9.1.0824: too many strlen() calls in register.c (#31022)
Problem: too many strlen() calls in register.c Solution: refactor code, add string_T struct to keep track of string lengths (John Marriott) closes: vim/vim#15952 https://github.com/vim/vim/commit/79f6ffd388299ef3b1c95cbe658785e6e66df144 Co-authored-by: John Marriott <basilisk@internode.on.net>
Diffstat (limited to 'src/nvim/api/vim.c')
-rw-r--r--src/nvim/api/vim.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c
index 8c88a19147..943c67ac8e 100644
--- a/src/nvim/api/vim.c
+++ b/src/nvim/api/vim.c
@@ -1317,15 +1317,15 @@ void nvim_put(ArrayOf(String) lines, String type, Boolean after, Boolean follow,
return; // Nothing to do.
}
- reg->y_array = arena_alloc(arena, lines.size * sizeof(uint8_t *), true);
+ reg->y_array = arena_alloc(arena, lines.size * sizeof(String), true);
reg->y_size = lines.size;
for (size_t i = 0; i < lines.size; i++) {
VALIDATE_T("line", kObjectTypeString, lines.items[i].type, {
return;
});
String line = lines.items[i].data.string;
- reg->y_array[i] = arena_memdupz(arena, line.data, line.size);
- memchrsub(reg->y_array[i], NUL, NL, line.size);
+ reg->y_array[i] = copy_string(line, arena);
+ memchrsub(reg->y_array[i].data, NUL, NL, line.size);
}
finish_yankreg_from_object(reg, false);