diff options
author | Luuk van Baal <luukvbaal@gmail.com> | 2024-06-10 16:55:16 +0200 |
---|---|---|
committer | Luuk van Baal <luukvbaal@gmail.com> | 2024-06-10 20:00:59 +0200 |
commit | 1dcda865591b9bdda2fec1a1860efb4df56ea533 (patch) | |
tree | 881b423a64bd4d2a9e6f4170c9115a2a1e73d67b /src | |
parent | d9af8c2431b7c6395abece8104be6a47d6f61f39 (diff) | |
download | rneovim-1dcda865591b9bdda2fec1a1860efb4df56ea533.tar.gz rneovim-1dcda865591b9bdda2fec1a1860efb4df56ea533.tar.bz2 rneovim-1dcda865591b9bdda2fec1a1860efb4df56ea533.zip |
fix(column): clamp line number for legacy signs
Problem: Legacy :sign API still allows placing signs beyond the end of
the buffer. This is unaccounted for by the signcolumn tracking
logic and is disallowed in general for the extmark API which
implements it now.
Solution: Clamp legacy sign line number to the length of the buffer.
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/sign.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/nvim/sign.c b/src/nvim/sign.c index 1ca0e846a9..605098fb66 100644 --- a/src/nvim/sign.c +++ b/src/nvim/sign.c @@ -126,8 +126,8 @@ static void buf_set_sign(buf_T *buf, uint32_t *id, char *group, int prio, linenr | (has_hl ? MT_FLAG_DECOR_SIGNHL : 0); DecorInline decor = { .ext = true, .data.ext = { .vt = NULL, .sh_idx = decor_put_sh(sign) } }; - extmark_set(buf, ns, id, lnum - 1, 0, -1, -1, decor, decor_flags, true, - false, true, true, NULL); + extmark_set(buf, ns, id, MIN(buf->b_ml.ml_line_count, lnum) - 1, 0, -1, -1, + decor, decor_flags, true, false, true, true, NULL); } /// For an existing, placed sign with "id", modify the sign, group or priority. |