Problem: Crash with very long %[] pattern. (Reza Mirzazade farkhani)
Solution: Check for reg_toolong. (closes #4703)
if (ret == NULL)
ret = br;
else
+ {
regtail(lastnode, br);
+ if (reg_toolong)
+ return NULL;
+ }
ungetchr();
one_exactly = TRUE;
if (OP(br) == BRANCH)
{
regtail(br, lastbranch);
+ if (reg_toolong)
+ return NULL;
br = OPERAND(br);
}
else
call assert_equal(1, "\u3042" =~# '[\u3000-\u4000]')
set re=0
endfunc
+
+func Test_optmatch_toolong()
+ set re=1
+ " Can only handle about 8000 characters.
+ let pat = '\\%[' .. repeat('x', 9000) .. ']'
+ call assert_fails('call match("abc def", "' .. pat .. '")', 'E339:')
+ set re=0
+endfunc
+
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1720,
/**/
1719,
/**/