From: Yasuhiro Matsumoto Date: Wed, 4 Mar 2026 19:29:45 +0000 (+0000) Subject: patch 9.2.0108: byteidx_common() and f_utf16idx() call ptr2len() twice X-Git-Tag: v9.2.0108^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=499e93d09a9d687baafaa922660fc19dd30ffa45;p=thirdparty%2Fvim.git patch 9.2.0108: byteidx_common() and f_utf16idx() call ptr2len() twice 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 Signed-off-by: Christian Brabandt --- diff --git a/src/strings.c b/src/strings.c index 5870850991..fb14e7de6a 100644 --- a/src/strings.c +++ b/src/strings.c @@ -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--; } diff --git a/src/version.c b/src/version.c index 63308de4b3..49a8fb3138 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 108, /**/ 107, /**/