To: vim_dev@googlegroups.com Subject: Patch 8.2.4774 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.4774 Problem: Crash when using a number for lambda name. Solution: Check the type of the lambda reference. Files: src/eval.c, src/errors.h, src/testdir/test_lambda.vim *** ../vim-8.2.4773/src/eval.c 2022-04-15 22:57:05.523488055 +0100 --- src/eval.c 2022-04-17 15:02:15.862629448 +0100 *************** *** 4102,4120 **** ++*arg; ret = eval1(arg, rettv, evalarg); *arg = skipwhite_and_linebreak(*arg, evalarg); ! if (**arg == ')') { ! ++*arg; } ! else { ! emsg(_(e_missing_closing_paren)); ! ret = FAIL; } } if (ret != OK) return FAIL; ! else if (**arg != '(') { if (verbose) { --- 4102,4124 ---- ++*arg; ret = eval1(arg, rettv, evalarg); *arg = skipwhite_and_linebreak(*arg, evalarg); ! if (**arg != ')') { ! emsg(_(e_missing_closing_paren)); ! return FAIL; } ! if (rettv->v_type != VAR_STRING && rettv->v_type != VAR_FUNC ! && rettv->v_type != VAR_PARTIAL) { ! emsg(_(e_string_or_function_required_for_arrow_parens_expr)); ! return FAIL; } + ++*arg; } if (ret != OK) return FAIL; ! ! if (**arg != '(') { if (verbose) { *** ../vim-8.2.4773/src/errors.h 2022-04-10 11:26:00.941539608 +0100 --- src/errors.h 2022-04-17 15:01:20.886635443 +0100 *************** *** 3259,3261 **** --- 3259,3265 ---- INIT(= N_("E1273: (NFA regexp) missing value in '\\%%%c'")); EXTERN char e_no_script_file_name_to_substitute_for_script[] INIT(= N_("E1274: No script file name to substitute for \"