To: vim_dev@googlegroups.com Subject: Patch 7.4.1782 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.1782 Problem: strcharpart() does not work properly with some multi-byte characters. Solution: Use mb_cptr2len() instead of mb_char2len(). (Hirohito Higashi) Files: src/eval.c, src/testdir/test_expr_utf8.vim *** ../vim-7.4.1781/src/eval.c 2016-04-23 15:18:55.069278328 +0200 --- src/eval.c 2016-04-23 15:24:50.197543980 +0200 *************** *** 19764,19770 **** if (nchar > 0) while (nchar > 0 && nbyte < slen) { ! nbyte += mb_char2len(p[nbyte]); --nchar; } else --- 19764,19770 ---- if (nchar > 0) while (nchar > 0 && nbyte < slen) { ! nbyte += mb_cptr2len(p + nbyte); --nchar; } else *************** *** 19779,19785 **** if (off < 0) len += 1; else ! len += mb_char2len(p[off]); --charlen; } } --- 19779,19785 ---- if (off < 0) len += 1; else ! len += mb_cptr2len(p + off); --charlen; } } *** ../vim-7.4.1781/src/testdir/test_expr_utf8.vim 2016-04-14 22:54:20.818618214 +0200 --- src/testdir/test_expr_utf8.vim 2016-04-23 15:23:48.038205952 +0200 *************** *** 23,28 **** --- 23,38 ---- call assert_equal('á', strcharpart('áxb', 0, 1)) call assert_equal('x', strcharpart('áxb', 1, 1)) + call assert_equal('いうeお', strcharpart('あいうeお', 1)) + call assert_equal('い', strcharpart('あいうeお', 1, 1)) + call assert_equal('いう', strcharpart('あいうeお', 1, 2)) + call assert_equal('いうe', strcharpart('あいうeお', 1, 3)) + call assert_equal('いうeお', strcharpart('あいうeお', 1, 4)) + call assert_equal('eお', strcharpart('あいうeお', 3)) + call assert_equal('e', strcharpart('あいうeお', 3, 1)) + + call assert_equal('あ', strcharpart('あいうeお', -3, 4)) + call assert_equal('a', strcharpart('àxb', 0, 1)) call assert_equal('̀', strcharpart('àxb', 1, 1)) call assert_equal('x', strcharpart('àxb', 2, 1)) *** ../vim-7.4.1781/src/version.c 2016-04-23 15:18:55.069278328 +0200 --- src/version.c 2016-04-23 15:27:07.664081041 +0200 *************** *** 755,756 **** --- 755,758 ---- { /* Add new patch number below this line */ + /**/ + 1782, /**/ -- Trees moving back and forth is what makes the wind blow. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///