diff --git a/src/regexp.c b/src/regexp.c index f06e15c833..30a604b236 100644 --- a/src/regexp.c +++ b/src/regexp.c @@ -730,7 +730,7 @@ get_equi_class(char_u **pp) int l = 1; char_u *p = *pp; - if (p[1] == '=') + if (p[1] == '=' && p[2] != NUL) { if (has_mbyte) l = (*mb_ptr2len)(p + 2); diff --git a/src/testdir/test_regexp_latin.vim b/src/testdir/test_regexp_latin.vim index bcac6c72c8..09104a1423 100644 --- a/src/testdir/test_regexp_latin.vim +++ b/src/testdir/test_regexp_latin.vim @@ -97,3 +97,10 @@ func Test_out_of_memory() " This will be slow... call assert_fails('call search("\\v((n||<)+);")', 'E363:') endfunc + +func Test_get_equi_class() + new + " Incomplete equivalence class caused invalid memory access + s/^/[[= + call assert_equal(1, search(getline(1))) +endfunc diff --git a/src/version.c b/src/version.c index 21b9217878..dbf4083419 100644 --- a/src/version.c +++ b/src/version.c @@ -779,6 +779,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 934, /**/ 933, /**/