vim-patch:9.0.1142: crash and/or memory leak when redefining function

Problem:    Crash and/or memory leak when redefining function after error.
Solution:   Clear pointer after making a copy.  Clear arrays on failure.
            (closes vim/vim#11774)

f057171d8b

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq
2025-02-03 10:45:50 +08:00
parent 638c6b406b
commit 82b029cbb0

View File

@@ -2918,13 +2918,14 @@ void ex_function(exarg_T *eap)
goto ret_free;
erret:
ga_clear_strings(&newargs);
ga_clear_strings(&default_args);
if (fp != NULL) {
// these were set to "newargs" and "default_args", which are cleared below
ga_init(&fp->uf_args, (int)sizeof(char *), 1);
ga_init(&fp->uf_def_args, (int)sizeof(char *), 1);
}
errret_2:
ga_clear_strings(&newargs);
ga_clear_strings(&default_args);
ga_clear_strings(&newlines);
if (free_fp) {
xfree(fp);