diff --git a/src/evalfunc.c b/src/evalfunc.c index a0fb99b738..04774128dd 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -10584,7 +10584,7 @@ repeat_string(typval_T *str_tv, int n, typval_T *rettv) int slen; int len; char_u *r; - int i; + int done; p = tv_get_string(str_tv); rettv->v_type = VAR_STRING; @@ -10599,8 +10599,17 @@ repeat_string(typval_T *str_tv, int n, typval_T *rettv) if (r == NULL) return; - for (i = 0; i < n; i++) - mch_memmove(r + i * slen, p, (size_t)slen); + mch_memmove(r, p, (size_t)slen); + done = slen; + while (done < len) + { + int copy_len = done; + + if (copy_len > len - done) + copy_len = len - done; + mch_memmove(r + done, r, (size_t)copy_len); + done += copy_len; + } r[len] = NUL; rettv->vval.v_string = r; diff --git a/src/version.c b/src/version.c index 9aef76d65e..3c64afaa92 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 */ +/**/ + 351, /**/ 350, /**/