patch 9.1.0168: too many STRLEN() calls

Commit: 
https://github.com/vim/vim/commit/bfcc895482c717c9f6d86890d789ec739c3016b4
Author: John Marriott <basil...@internode.on.net>
Date:   Mon Mar 11 22:04:45 2024 +0100

    patch 9.1.0168: too many STRLEN() calls
    
    Problem:  too many STRLEN() calls
    Solution: Make use of ml_get_len() calls instead
              (John Marriott)
    
    closes: #14123
    
    Signed-off-by: John Marriott <basil...@internode.on.net>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/change.c b/src/change.c
index 3af19b600..daf4faed5 100644
--- a/src/change.c
+++ b/src/change.c
@@ -1056,7 +1056,7 @@ ins_char_bytes(char_u *buf, int charlen)
 
     col = curwin->w_cursor.col;
     oldp = ml_get(lnum);
-    linelen = (int)STRLEN(oldp) + 1;
+    linelen = (int)ml_get_len(lnum) + 1;
 
     // The lengths default to the values for when not replacing.
     oldlen = 0;
@@ -1193,7 +1193,7 @@ ins_str(char_u *s)
 
     col = curwin->w_cursor.col;
     oldp = ml_get(lnum);
-    oldlen = (int)STRLEN(oldp);
+    oldlen = (int)ml_get_len(lnum);
 
     newp = alloc(oldlen + newlen + 1);
     if (newp == NULL)
@@ -1272,7 +1272,7 @@ del_bytes(
     int                fixpos = fixpos_arg;
 
     oldp = ml_get(lnum);
-    oldlen = (int)STRLEN(oldp);
+    oldlen = (int)ml_get_len(lnum);
 
     // Can't do anything when the cursor is on the NUL after the line.
     if (col >= oldlen)
@@ -1436,12 +1436,12 @@ open_line(
 #endif
 
     // make a copy of the current line so we can mess with it
-    saved_line = vim_strsave(ml_get_curline());
+    saved_line = vim_strnsave(ml_get_curline(), ml_get_curline_len());
     if (saved_line == NULL)        // out of memory!
        return FALSE;
 
 #ifdef FEAT_PROP_POPUP
-    at_eol = curwin->w_cursor.col >= (int)STRLEN(saved_line);
+    at_eol = curwin->w_cursor.col >= (int)ml_get_curline_len();
 #endif
 
     if (State & VREPLACE_FLAG)
@@ -1454,7 +1454,7 @@ open_line(
        // the line, replacing what was there before and pushing the right
        // stuff onto the replace stack.  -- webb.
        if (curwin->w_cursor.lnum < orig_line_count)
-           next_line = vim_strsave(ml_get(curwin->w_cursor.lnum + 1));
+           next_line = vim_strnsave(ml_get(curwin->w_cursor.lnum + 1), 
ml_get_len(curwin->w_cursor.lnum + 1));
        else
            next_line = vim_strsave((char_u *)"");
        if (next_line == NULL)      // out of memory!
@@ -2307,7 +2307,7 @@ open_line(
     if (State & VREPLACE_FLAG)
     {
        // Put new line in p_extra
-       p_extra = vim_strsave(ml_get_curline());
+       p_extra = vim_strnsave(ml_get_curline(), ml_get_curline_len());
        if (p_extra == NULL)
            goto theend;
 
@@ -2352,7 +2352,7 @@ truncate_line(int fixpos)
        newp = vim_strsave((char_u *)"");
     else
        newp = vim_strnsave(old_line, col);
-    deleted = (int)STRLEN(old_line) - col;
+    deleted = (int)ml_get_len(lnum) - col;
 
     if (newp == NULL)
        return FAIL;
diff --git a/src/edit.c b/src/edit.c
index 26853dce0..f700c6a12 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -4977,7 +4977,7 @@ ins_tab(void)
        {
            pos = curwin->w_cursor;
            cursor = &pos;
-           saved_line = vim_strsave(ml_get_curline());
+           saved_line = vim_strnsave(ml_get_curline(), ml_get_curline_len());
            if (saved_line == NULL)
                return FALSE;
            ptr = saved_line + pos.col;
diff --git a/src/eval.c b/src/eval.c
index ca5a2685f..69b837402 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -6468,7 +6468,7 @@ var2fpos(
        if (charcol)
            len = (long)mb_charlen(ml_get(pos.lnum));
        else
-           len = (long)STRLEN(ml_get(pos.lnum));
+           len = (long)ml_get_len(pos.lnum);
 
        // Get the column number
        // We accept "$" for the column number: last column.
@@ -6574,7 +6574,7 @@ var2fpos(
            if (charcol)
                pos.col = (colnr_T)mb_charlen(ml_get_curline());
            else
-               pos.col = (colnr_T)STRLEN(ml_get_curline());
+               pos.col = ml_get_curline_len();
        }
        return &pos;
     }
diff --git a/src/evalfunc.c b/src/evalfunc.c
index eeee00d66..14650caf6 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3637,7 +3637,7 @@ get_col(typval_T *argvars, typval_T *rettv, int charcol)
        {
            // '> can be MAXCOL, get the length of the line then
            if (fp->lnum <= curbuf->b_ml.ml_line_count)
-               col = (colnr_T)STRLEN(ml_get(fp->lnum)) + 1;
+               col = ml_get_len(fp->lnum) + 1;
            else
                col = MAXCOL;
        }
@@ -11134,7 +11134,7 @@ f_synID(typval_T *argvars UNUSED, typval_T *rettv)
     trans = (int)tv_get_bool_chk(&argvars[2], &transerr);
 
     if (!transerr && lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
-           && col >= 0 && col < (long)STRLEN(ml_get(lnum)))
+           && col >= 0 && col < (long)ml_get_len(lnum))
        id = syn_get_id(curwin, lnum, col, trans, NULL, FALSE);
 #endif
 
@@ -11311,7 +11311,7 @@ f_synconcealed(typval_T *argvars UNUSED, typval_T 
*rettv)
     if (rettv_list_alloc(rettv) == OK)
     {
        if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
-           && col >= 0 && col <= (long)STRLEN(ml_get(lnum))
+           && col >= 0 && col <= (long)ml_get_len(lnum)
            && curwin->w_p_cole > 0)
        {
            (void)syn_get_id(curwin, lnum, col, FALSE, NULL, FALSE);
@@ -11368,7 +11368,7 @@ f_synstack(typval_T *argvars UNUSED, typval_T *rettv)
     col = (colnr_T)tv_get_number(&argvars[1]) - 1;     // -1 on type error
 
     if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
-           && col >= 0 && col <= (long)STRLEN(ml_get(lnum))
+           && col >= 0 && col <= (long)ml_get_len(lnum)
            && rettv_list_alloc(rettv) == OK)
     {
        (void)syn_get_id(curwin, lnum, col, FALSE, NULL, TRUE);
@@ -11546,7 +11546,7 @@ f_virtcol(typval_T *argvars, typval_T *rettv)
            fp->col = 0;
        else
        {
-           len = (int)STRLEN(ml_get(fp->lnum));
+           len = (int)ml_get_len(fp->lnum);
            if (fp->col > len)
                fp->col = len;
        }
diff --git a/src/memline.c b/src/memline.c
index 99b9e9f2e..522815526 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -3661,7 +3661,7 @@ ml_replace_len(
 
     curbuf->b_ml.ml_line_ptr = line;
     curbuf->b_ml.ml_line_len = len;
-    curbuf->b_ml.ml_line_textlen = len_arg + 1;
+    curbuf->b_ml.ml_line_textlen = len_arg + !has_props;
     curbuf->b_ml.ml_line_lnum = lnum;
     curbuf->b_ml.ml_flags = (curbuf->b_ml.ml_flags | ML_LINE_DIRTY) & 
~ML_EMPTY;
 
diff --git a/src/version.c b/src/version.c
index 7279d7165..55c9c9fdf 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    168,
 /**/
     167,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1rjmz9-00DZ6X-UY%40256bit.org.

Raspunde prin e-mail lui