To: vim_dev@googlegroups.com Subject: Patch 8.2.1789 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.1789 Problem: Vim9: crash with invalid list constant. (Dhiraj Mishra) Solution: Return FAIL when compiling the list fails. (closes #7066) Files: src/vim9compile.c, src/errors.h, src/testdir/test_vim9_expr.vim *** ../vim-8.2.1788/src/vim9compile.c 2020-09-27 21:27:36.490544195 +0200 --- src/vim9compile.c 2020-10-03 13:38:40.735711826 +0200 *************** *** 2549,2555 **** break; } if (compile_expr0(&p, cctx) == FAIL) ! break; ++count; if (*p == ',') { --- 2549,2555 ---- break; } if (compile_expr0(&p, cctx) == FAIL) ! return FAIL; ++count; if (*p == ',') { *************** *** 3333,3339 **** --- 3333,3342 ---- *arg = p + 1; if (may_get_next_line(*arg, arg, cctx) == FAIL) + { + emsg(_(e_missing_name_after_dot)); return FAIL; + } // dictionary member: dict.name p = *arg; if (eval_isdictc(*p)) *** ../vim-8.2.1788/src/errors.h 2020-09-27 15:19:23.638118934 +0200 --- src/errors.h 2020-10-03 13:38:11.735794362 +0200 *************** *** 276,279 **** --- 276,281 ---- INIT(= N_("E1125: Final requires a value")); EXTERN char e_cannot_use_let_in_vim9_script[] INIT(= N_("E1126: Cannot use :let in Vim9 script")); + EXTERN char e_missing_name_after_dot[] + INIT(= N_("E1127: Missing name after dot")); #endif *** ../vim-8.2.1788/src/testdir/test_vim9_expr.vim 2020-09-27 22:47:01.880163387 +0200 --- src/testdir/test_vim9_expr.vim 2020-10-03 13:39:04.499644208 +0200 *************** *** 1538,1543 **** --- 1538,1553 ---- CheckDefExecFailure(["var l: list = ['x', 234]"], 'E1012:', 1) CheckDefExecFailure(["var l: list = [234, 'x']"], 'E1012:', 1) CheckDefExecFailure(["var l: list = ['x', 123]"], 'E1012:', 1) + + var lines =<< trim END + vim9script + var datalist: list + def Main() + datalist += ['x'. + enddef + Main() + END + CheckScriptFailure(lines, 'E1127:') enddef def Test_expr7_list_vim9script() *** ../vim-8.2.1788/src/version.c 2020-10-03 12:57:23.014572543 +0200 --- src/version.c 2020-10-03 13:41:12.003281132 +0200 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 1789, /**/ -- How To Keep A Healthy Level Of Insanity: 17. When the money comes out the ATM, scream "I won!, I won! 3rd time this week!!!!!" /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///