commit e77d15cc5d63293ab890ffd9715059cfade59d4f
parent ed012b817d7079663893a8446a34066734831428
Author: Jan Edmund Lazo <jan.lazo@mail.utoronto.ca>
Date: Mon, 18 Aug 2025 18:28:39 -0400
vim-patch:8.2.3348: line2byte() returns wrong value after adding textprop
Problem: line2byte() returns wrong value after adding textprop. (Yuto
Kimura)
Solution: Reduce the length by the size of the text property. (closes vim/vim#8759)
https://github.com/vim/vim/commit/14c7530c4fca786d3594508e28943f10125827c3
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat:
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/nvim/memline.c b/src/nvim/memline.c
@@ -2870,7 +2870,9 @@ static void ml_flush_line(buf_T *buf, bool noalloc)
memmove(old_line - extra, new_line, (size_t)new_len);
buf->b_ml.ml_flags |= (ML_LOCKED_DIRTY | ML_LOCKED_POS);
// The else case is already covered by the insert and delete
- ml_updatechunk(buf, lnum, extra, ML_CHNK_UPDLINE);
+ if (extra != 0) {
+ ml_updatechunk(buf, lnum, extra, ML_CHNK_UPDLINE);
+ }
} else {
// Cannot do it in one data block: Delete and append.
// Append first, because ml_delete_int() cannot delete the
@@ -4003,7 +4005,7 @@ int ml_find_line_or_offset(buf_T *buf, linenr_T lnum, int *offp, bool no_ff)
return 1; // Not a "find offset" and offset 0 _must_ be in line 1
}
// Find the last chunk before the one containing our line. Last chunk is
- // special because it will never qualify
+ // special because it will never qualify.
linenr_T curline = 1;
int curix = 0;
int size = 0;