diff --git a/7.4.323 b/7.4.323 new file mode 100644 index 0000000..3faac9c --- /dev/null +++ b/7.4.323 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.323 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.323 +Problem: Substitute() with zero width pattern breaks multi-byte character. +Solution: Take multi-byte character size into account. (Yukihiro Nakadaira) +Files: src/eval.c src/testdir/test69.in, src/testdir/test69.ok + + +*** ../vim-7.4.322/src/eval.c 2014-05-28 20:31:37.496292805 +0200 +--- src/eval.c 2014-06-12 18:34:22.928389291 +0200 +*************** +*** 24848,24855 **** + if (zero_width == regmatch.startp[0]) + { + /* avoid getting stuck on a match with an empty string */ +! *((char_u *)ga.ga_data + ga.ga_len) = *tail++; +! ++ga.ga_len; + continue; + } + zero_width = regmatch.startp[0]; +--- 24848,24858 ---- + if (zero_width == regmatch.startp[0]) + { + /* avoid getting stuck on a match with an empty string */ +! i = MB_PTR2LEN(tail); +! mch_memmove((char_u *)ga.ga_data + ga.ga_len, tail, +! (size_t)i); +! ga.ga_len += i; +! tail += i; + continue; + } + zero_width = regmatch.startp[0]; +*** ../vim-7.4.322/src/testdir/test69.in 2014-02-22 23:49:30.268896843 +0100 +--- src/testdir/test69.in 2014-06-12 18:32:43.108385514 +0200 +*************** +*** 180,185 **** +--- 180,192 ---- + byteidxcomp + + STARTTEST ++ /^substitute ++ :let y = substitute('123', '\zs', 'a', 'g') | put =y ++ ENDTEST ++ ++ substitute ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/^Results/,$wq! test.out + ENDTEST +*** ../vim-7.4.322/src/testdir/test69.ok 2014-02-22 23:49:30.268896843 +0100 +--- src/testdir/test69.ok 2014-06-12 18:32:43.108385514 +0200 +*************** +*** 160,162 **** +--- 160,166 ---- + [0, 1, 3, 4, -1] + [0, 1, 2, 4, 5, -1] + ++ ++ substitute ++ a1a2a3a ++ +*** ../vim-7.4.322/src/version.c 2014-06-12 18:03:24.940319000 +0200 +--- src/version.c 2014-06-12 18:32:08.356384200 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 323, + /**/ + +-- + When danger reared its ugly head, + He bravely turned his tail and fled + Yes, Brave Sir Robin turned about + And gallantly he chickened out + Bravely taking to his feet + He beat a very brave retreat + Bravest of the brave Sir Robin + Petrified of being dead + Soiled his pants then brave Sir Robin + Turned away and fled. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// 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 ///