diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-08-24 20:59:40 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-24 20:59:40 -0400 |
commit | 8a333afec53a48c90de7b0bde30f9db2d02d1898 (patch) | |
tree | 223e53de750fc3f2330a83d96367f3ecbe7c590d /src/nvim/eval/funcs.c | |
parent | 8c49e3d50959e24dadd688f56a18f104bd5fd934 (diff) | |
parent | b46b37306552911552e348a4ed44c1c6cf2f3eef (diff) | |
download | rneovim-8a333afec53a48c90de7b0bde30f9db2d02d1898.tar.gz rneovim-8a333afec53a48c90de7b0bde30f9db2d02d1898.tar.bz2 rneovim-8a333afec53a48c90de7b0bde30f9db2d02d1898.zip |
Merge pull request #12786 from janlazo/vim-8.1.1516
vim-patch:8.1.{1516,1677,2051,2089,2275,2364},8.2.{423,1517}
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r-- | src/nvim/eval/funcs.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 18e514b9a0..8e0e420eb0 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -9946,6 +9946,16 @@ static void f_strpart(typval_T *argvars, typval_T *rettv, FunPtr fptr) len = slen - n; } + if (argvars[2].v_type != VAR_UNKNOWN && argvars[3].v_type != VAR_UNKNOWN) { + int off; + + // length in characters + for (off = n; off < (int)slen && len > 0; len--) { + off += utfc_ptr2len((char_u *)p + off); + } + len = off - n; + } + rettv->v_type = VAR_STRING; rettv->vval.v_string = (char_u *)xmemdupz(p + n, (size_t)len); } |