aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/extmark.c
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2025-01-09 13:37:28 +0100
committerGitHub <noreply@github.com>2025-01-09 13:37:28 +0100
commitdcaf8bef08d094889ef5fac24d123871dd0e6a6f (patch)
tree6a720b1075cf58cde9d6f784ce41b6d7df0b0a6a /src/nvim/extmark.c
parent6dd7fcaafdc5d80948e1c4b05b19584de16528d6 (diff)
parent33ff546b50f759bd49d9518a94f8c2416848bdd7 (diff)
downloadrneovim-dcaf8bef08d094889ef5fac24d123871dd0e6a6f.tar.gz
rneovim-dcaf8bef08d094889ef5fac24d123871dd0e6a6f.tar.bz2
rneovim-dcaf8bef08d094889ef5fac24d123871dd0e6a6f.zip
Merge pull request #31844 from bfredl/iter_crash
fix(decoration): fix crash when on_lines decor provider modifies marktree
Diffstat (limited to 'src/nvim/extmark.c')
-rw-r--r--src/nvim/extmark.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/nvim/extmark.c b/src/nvim/extmark.c
index 6119d838f9..79eea718f4 100644
--- a/src/nvim/extmark.c
+++ b/src/nvim/extmark.c
@@ -95,6 +95,7 @@ void extmark_set(buf_T *buf, uint32_t ns_id, uint32_t *idp, int row, colnr_T col
MTKey mark = { { row, col }, ns_id, id, flags, decor.data };
marktree_put(buf->b_marktree, mark, end_row, end_col, end_right_gravity);
+ decor_state_invalidate(buf);
revised:
if (decor_flags || decor.ext) {
@@ -184,6 +185,8 @@ void extmark_del(buf_T *buf, MarkTreeIter *itr, MTKey key, bool restore)
}
}
+ decor_state_invalidate(buf);
+
// TODO(bfredl): delete it from current undo header, opportunistically?
}
@@ -237,6 +240,10 @@ bool extmark_clear(buf_T *buf, uint32_t ns_id, int l_row, colnr_T l_col, int u_r
}
}
+ if (marks_cleared_any) {
+ decor_state_invalidate(buf);
+ }
+
return marks_cleared_any;
}