commit | 73dfe917ba6357413aaf98a021c91add5ac6e9bc | [log] [tgz] |
---|---|---|
author | Bram Moolenaar <Bram@vim.org> | Sat Apr 23 13:54:48 2016 +0200 |
committer | Bram Moolenaar <Bram@vim.org> | Sat Apr 23 13:54:48 2016 +0200 |
tree | fc64557799c316285f30090f881d385266ad3b57 | |
parent | b2fa54a84078e2b8dc3c7c7bfbccf6b75c0788d0 [diff] [blame] |
patch 7.4.1779 Problem: Using negative index in strcharpart(). (Yegappan Lakshmanan) Solution: Assume single byte when using a negative iindex.
diff --git a/src/eval.c b/src/eval.c index 146348d..a3fe2a2 100644 --- a/src/eval.c +++ b/src/eval.c
@@ -19774,7 +19774,12 @@ 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; } }