Problem: Illegal memory access when using a lambda with an error.
Solution: Avoid skipping over the NUL after a string.
++*arg;
ret = eval1(arg, rettv, evalarg);
*arg = skipwhite_and_linebreak(*arg, evalarg);
- if (**arg != ')')
+ if (**arg == ')')
+ {
+ ++*arg;
+ }
+ else
{
emsg(_(e_missing_closing_paren));
ret = FAIL;
}
- ++*arg;
}
if (ret != OK)
return FAIL;
call assert_fails('echo {a, a -> a + a}(1, 2)', 'E853:')
call assert_fails('echo {a, b -> a + b)}(1, 2)', 'E451:')
echo assert_fails('echo 10->{a -> a + 2}', 'E107:')
+
+ call assert_fails('eval 0->(', "E110: Missing ')'")
endfunc
func Test_not_lamda()
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 3847,
/**/
3846,
/**/