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 -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.