diff src/ex_docmd.c @ 23171:bb7531f77529 v8.2.2131

patch 8.2.2131: Vim9: crash when lambda uses same var as assignment Commit: https://github.com/vim/vim/commit/709664cca0b59b69caa1ed40ebfcf00b2c672693 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Dec 12 14:33:41 2020 +0100 patch 8.2.2131: Vim9: crash when lambda uses same var as assignment Problem: Vim9: crash when lambda uses same var as assignment. Solution: Do not let lookup_local change lv_from_outer, make a copy. (closes #7461)
author Bram Moolenaar <Bram@vim.org>
date Sat, 12 Dec 2020 14:45:05 +0100
parents a916fca16d4b
children 821701ecbde7
line wrap: on
line diff
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3271,7 +3271,7 @@ skip_option_env_lead(char_u *start)
 find_ex_command(
 	exarg_T *eap,
 	int	*full UNUSED,
-	void	*(*lookup)(char_u *, size_t, cctx_T *) UNUSED,
+	int	(*lookup)(char_u *, size_t, void *, cctx_T *) UNUSED,
 	cctx_T	*cctx UNUSED)
 {
     int		len;
@@ -3387,7 +3387,7 @@ find_ex_command(
 			|| *eap->cmd == '&'
 			|| *eap->cmd == '$'
 			|| *eap->cmd == '@'
-			|| lookup(eap->cmd, p - eap->cmd, cctx) != NULL)
+			|| lookup(eap->cmd, p - eap->cmd, NULL, cctx) == OK)
 		{
 		    eap->cmdidx = CMD_var;
 		    return eap->cmd;