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)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 0788fa3..065a038 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3271,7 +3271,7 @@
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 @@
|| *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;