0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.

Problem:    Vim9: using illegal pointer with inline function inside a lambda.
Solution:   Clear eval_tofree_cmdline when advancing to the next line.
            (closes #8578)
This commit is contained in:
Bram Moolenaar
2021-07-18 13:42:29 +02:00
parent 47bc9c3337
commit c6ba2f9dde
3 changed files with 23 additions and 0 deletions

View File

@@ -2177,6 +2177,11 @@ eval_next_line(evalarg_T *evalarg)
vim_free(evalarg->eval_tofree);
evalarg->eval_tofree = line;
}
// Advanced to the next line, "arg" no longer points into the previous
// line.
VIM_CLEAR(evalarg->eval_tofree_cmdline);
return skipwhite(line);
}

View File

@@ -2265,6 +2265,22 @@ def Test_nested_inline_lambda()
})
END
CheckScriptSuccess(lines)
lines =<< trim END
vim9script
def s:func()
range(10)
->mapnew((_, _) => ({
key: range(10)->mapnew((_, _) => {
return ' '
}),
}))
enddef
defcomp
END
CheckScriptSuccess(lines)
enddef
def Shadowed(): list<number>

View File

@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3175,
/**/
3174,
/**/