patch 9.1.0172: More code can use ml_get_buf_len() instead of STRLEN()
Problem: More code can use ml_get_buf_len() instead of STRLEN().
Solution: Change more STRLEN() calls to ml_get_buf_len(). Also do not
set ml_line_textlen in ml_replace_len() if "has_props" is set,
because "len_arg" also includes the size of text properties in
that case. (zeertzjq)
closes: #14183
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/memline.c b/src/memline.c
index 5228155..a1c29cf 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -2682,6 +2682,13 @@
return ml_get_buf_len(curbuf, lnum);
}
+// return length (excluding the NUL) of the text after position "pos"
+ colnr_T
+ml_get_pos_len(pos_T *pos)
+{
+ return ml_get_buf_len(curbuf, curwin->w_cursor.lnum) - pos->col;
+}
+
// return length (excluding the NUL) of the cursor line
colnr_T
ml_get_curline_len(void)
@@ -3661,7 +3668,7 @@
curbuf->b_ml.ml_line_ptr = line;
curbuf->b_ml.ml_line_len = len;
- curbuf->b_ml.ml_line_textlen = len_arg + !has_props;
+ curbuf->b_ml.ml_line_textlen = !has_props ? len_arg + 1 : 0;
curbuf->b_ml.ml_line_lnum = lnum;
curbuf->b_ml.ml_flags = (curbuf->b_ml.ml_flags | ML_LINE_DIRTY) & ~ML_EMPTY;