Mercurial > vim
changeset 8987:42beb54724fa v7.4.1779
commit https://github.com/vim/vim/commit/73dfe917ba6357413aaf98a021c91add5ac6e9bc
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Apr 23 13:54:48 2016 +0200
patch 7.4.1779
Problem: Using negative index in strcharpart(). (Yegappan Lakshmanan)
Solution: Assume single byte when using a negative iindex.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 23 Apr 2016 14:00:05 +0200 |
parents | dd79f120c9d5 |
children | c9dcf5ed0b1a |
files | src/eval.c src/version.c |
diffstat | 2 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -19774,7 +19774,12 @@ f_strcharpart(typval_T *argvars, typval_ charlen = get_tv_number(&argvars[2]); while (charlen > 0 && nbyte + len < slen) { - len += mb_char2len(p[nbyte + len]); + int off = nbyte + len; + + if (off < 0) + len += 1; + else + len += mb_char2len(p[off]); --charlen; } }