aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorluukvbaal <luukvbaal@gmail.com>2024-01-23 22:51:18 +0100
committerGitHub <noreply@github.com>2024-01-24 05:51:18 +0800
commitfcd9905291c02917410ff7c55542fd73e4b25e2d (patch)
treed46e398f60fe2522387b627fa88d77b575cc0629 /src
parent932c7eb01964789e1871063f8d5f4f21ffdd4d65 (diff)
downloadrneovim-fcd9905291c02917410ff7c55542fd73e4b25e2d.tar.gz
rneovim-fcd9905291c02917410ff7c55542fd73e4b25e2d.tar.bz2
rneovim-fcd9905291c02917410ff7c55542fd73e4b25e2d.zip
fix(sign): avoid deleting from sign map while looping over it (#27158)
Diffstat (limited to 'src')
-rw-r--r--src/nvim/sign.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/nvim/sign.c b/src/nvim/sign.c
index b1a2d1ad08..dc09bcc5a0 100644
--- a/src/nvim/sign.c
+++ b/src/nvim/sign.c
@@ -1021,9 +1021,14 @@ static void sign_get_placed(buf_T *buf, linenr_T lnum, int id, const char *group
void free_signs(void)
{
cstr_t name;
+ kvec_t(cstr_t) names = KV_INITIAL_VALUE;
map_foreach_key(&sign_map, name, {
- sign_undefine_by_name(name);
+ kv_push(names, name);
});
+ for (size_t i = 0; i < kv_size(names); i++) {
+ sign_undefine_by_name(kv_A(names, i));
+ }
+ kv_destroy(names);
}
static enum {