patch 8.1.0934: invalid memory access in search pattern
Problem: Invalid memory access in search pattern. (Kuang-che Wu)
Solution: Check for incomplete equivalence class. (closes #3970)
diff --git a/src/regexp.c b/src/regexp.c
index f06e15c..30a604b 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -730,7 +730,7 @@
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 bcac6c7..09104a1 100644
--- a/src/testdir/test_regexp_latin.vim
+++ b/src/testdir/test_regexp_latin.vim
@@ -97,3 +97,10 @@
" 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 21b9217..dbf4083 100644
--- a/src/version.c
+++ b/src/version.c
@@ -780,6 +780,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 934,
+/**/
933,
/**/
932,