patch 8.2.1802: Vim9: crash with unterminated dict
Problem: Vim9: crash with unterminated dict. (Dhiraj Mishra)
Solution: Return empty string instead of NULL. (closes #7084)
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 2cbb285..9292a77 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1819,6 +1819,8 @@
CheckDefExecFailure(['var x: dict<number> = #{a: "x", b: 134}'], 'E1012:', 1)
CheckDefExecFailure(['var x: dict<string> = #{a: 234, b: "1"}'], 'E1012:', 1)
CheckDefExecFailure(['var x: dict<string> = #{a: "x", b: 134}'], 'E1012:', 1)
+
+ CheckDefFailure(['var x = ({'], 'E723:', 2)
enddef
def Test_expr7_dict_vim9script()
diff --git a/src/version.c b/src/version.c
index 80b9319..244c26d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1802,
+/**/
1801,
/**/
1800,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 373d76c..a6bdcc3 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2822,7 +2822,10 @@
failret:
if (*arg == NULL)
+ {
semsg(_(e_missing_dict_end), _("[end of lines]"));
+ *arg = (char_u *)"";
+ }
dict_unref(d);
return FAIL;
}