diff options
author | bfredl <bjorn.linse@gmail.com> | 2025-01-09 13:37:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-09 13:37:28 +0100 |
commit | dcaf8bef08d094889ef5fac24d123871dd0e6a6f (patch) | |
tree | 6a720b1075cf58cde9d6f784ce41b6d7df0b0a6a /src/nvim/extmark.c | |
parent | 6dd7fcaafdc5d80948e1c4b05b19584de16528d6 (diff) | |
parent | 33ff546b50f759bd49d9518a94f8c2416848bdd7 (diff) | |
download | rneovim-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.c | 7 |
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; } |