]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.2.0108: byteidx_common() and f_utf16idx() call ptr2len() twice v9.2.0108
authorYasuhiro Matsumoto <mattn.jp@gmail.com>
Wed, 4 Mar 2026 19:29:45 +0000 (19:29 +0000)
committerChristian Brabandt <cb@256bit.org>
Wed, 4 Mar 2026 19:29:45 +0000 (19:29 +0000)
Problem:  byteidx_common() and f_utf16idx() are calling ptr2len() twice
          per iteration, instead of reusing the already computed clen.
Solution: Reuse clen for pointer advancement in both functions
          (Yasuhiro Matsumoto).

closes: #19573

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/strings.c
src/version.c

index 5870850991d279d5e456deec222110e8fc87fc69..fb14e7de6a20fba3b2ab71acffebbaaca45aaa7e 100644 (file)
@@ -1107,8 +1107,10 @@ byteidx_common(typval_T *argvars, typval_T *rettv, int comp)
            int c = (clen > 1) ? utf_ptr2char(t) : *t;
            if (c > 0xFFFF)
                idx--;
+           if (idx > 0)
+               t += clen;
        }
-       if (idx > 0)
+       else if (idx > 0)
            t += ptr2len(t);
     }
     rettv->vval.v_number = (varnumber_T)(t - str);
@@ -2243,7 +2245,7 @@ f_utf16idx(typval_T *argvars, typval_T *rettv)
        int c = (clen > 1) ? utf_ptr2char(p) : *p;
        if (c > 0xFFFF)
            len++;
-       p += ptr2len(p);
+       p += clen;
        if (charidx)
            idx--;
     }
index 63308de4b361595103055d98fd5c359ac9398c48..49a8fb31388d3317dff4608333641f38f6257cc7 100644 (file)
@@ -734,6 +734,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    108,
 /**/
     107,
 /**/