Hi,

On Wed, Jun 4, 2014 at 1:47 PM, Yukihiro Nakadaira
<[email protected]> wrote:
> substitute() with zero width pattern breaks multi-byte character.
>
> Please check the following patch.
>
> diff -r bed71c37618c src/eval.c
> --- a/src/eval.c    Thu May 29 14:36:29 2014 +0200
> +++ b/src/eval.c    Wed Jun 04 20:44:48 2014 +0900
> @@ -24848,8 +24848,11 @@
>          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;
> +            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;
>          }

Shouldn't you check for #ifdef FEAT_MBYTE somewhere in this patch?

Christ van Willegen
-- 
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

-- 
-- 
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.

Raspunde prin e-mail lui