summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-04-08 18:05:03 +0200
committerBram Moolenaar <Bram@vim.org>2021-04-08 18:05:03 +0200
commit175a41c13f3e27e30c662f2f418c5a347dbc645d (patch)
tree33eb903cc6dc41604dd4c5f136417114e1003348 /src
parentfa5963880df1d11613594ab78c0a68f894d34aa3 (diff)
patch 8.2.2736: Vim9: for loop over string is a bit slowv8.2.2736
Problem: Vim9: for loop over string is a bit slow. Solution: Avoid using strlen().
Diffstat (limited to 'src')
-rw-r--r--src/version.c2
-rw-r--r--src/vim9execute.c3
2 files changed, 3 insertions, 2 deletions
diff --git a/src/version.c b/src/version.c
index f1534f1284..4e6435c31d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2736,
+/**/
2735,
/**/
2734,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index d3e2af772a..d6c4764882 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -2792,12 +2792,11 @@ call_def_function(
else if (ltv->v_type == VAR_STRING)
{
char_u *str = ltv->vval.v_string;
- int len = str == NULL ? 0 : (int)STRLEN(str);
// Push the next character from the string. The index
// is for the last byte of the previous character.
++idxtv->vval.v_number;
- if (idxtv->vval.v_number >= len)
+ if (str == NULL || str[idxtv->vval.v_number] == NUL)
{
// past the end of the string, jump to "endfor"
ectx.ec_iidx = iptr->isn_arg.forloop.for_end;