Skip to content

Commit

Permalink
patch 8.2.4397: crash when using many composing characters in error m…
Browse files Browse the repository at this point in the history
…essage

Problem:    Crash when using many composing characters in error message.
Solution:   Use mb_cptr2char_adv() instead of mb_ptr2char_adv().
  • Loading branch information
brammool committed Feb 16, 2022
1 parent f5288c5 commit 34f8117
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 1 deletion.
8 changes: 8 additions & 0 deletions src/testdir/test_assert.vim
Expand Up @@ -53,6 +53,14 @@ func Test_assert_equal()
call assert_equal("\b\e\f\n\t\r\\\x01\x7f", 'x')
call assert_match('Expected ''\\b\\e\\f\\n\\t\\r\\\\\\x01\\x7f'' but got ''x''', v:errors[0])
call remove(v:errors, 0)

" many composing characters are handled properly
call setline(1, ' ')
norm 100gr݀
call assert_equal(1, getline(1))
call assert_match("Expected 1 but got '.* occurs 100 times]'", v:errors[0])
call remove(v:errors, 0)
bwipe!
endfunc

func Test_assert_equal_dict()
Expand Down
2 changes: 1 addition & 1 deletion src/testing.c
Expand Up @@ -101,7 +101,7 @@ ga_concat_shorten_esc(garray_T *gap, char_u *str)
{
same_len = 1;
s = p;
c = mb_ptr2char_adv(&s);
c = mb_cptr2char_adv(&s);
clen = s - p;
while (*s != NUL && c == mb_ptr2char(s))
{
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -750,6 +750,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4397,
/**/
4396,
/**/
Expand Down

0 comments on commit 34f8117

Please sign in to comment.