Mercurial > vim
changeset 30092:53e7e912eeec v9.0.0382
patch 9.0.0382: freeing the wrong string on failure
Commit: https://github.com/vim/vim/commit/31ea6bf530a814991f669122dbc9921117a862c3
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Sep 5 10:47:13 2022 +0100
patch 9.0.0382: freeing the wrong string on failure
Problem: Freeing the wrong string on failure.
Solution: Adjust the argument. Reorder the code.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 05 Sep 2022 12:00:06 +0200 |
parents | 44d3ef8599bc |
children | a0d255a91b48 |
files | src/version.c src/vim9execute.c |
diffstat | 2 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 382, +/**/ 381, /**/ 380,
--- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -937,21 +937,22 @@ add_defer_function(char_u *name, int arg if (dfunc->df_defer_var_idx == 0) { iemsg("df_defer_var_idx is zero"); - vim_free(func_tv.vval.v_string); + vim_free(name); return FAIL; } - func_tv.v_type = VAR_FUNC; - func_tv.v_lock = 0; - func_tv.vval.v_string = name; l = add_defer_item(dfunc->df_defer_var_idx - 1, 1, current_ectx); if (l == NULL) { - vim_free(func_tv.vval.v_string); + vim_free(name); return FAIL; } + func_tv.v_type = VAR_FUNC; + func_tv.v_lock = 0; + func_tv.vval.v_string = name; list_set_item(l, 0, &func_tv); + for (i = 0; i < argcount; ++i) list_set_item(l, i + 1, argvars + i); return OK;