Mercurial > vim
changeset 20542:dd3165956464 v8.2.0825
patch 8.2.0825: def_function() may return pointer that was freed
Commit: https://github.com/vim/vim/commit/a14e6975478adeddcc2161edc1ec611016aa89f3
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon May 25 23:29:28 2020 +0200
patch 8.2.0825: def_function() may return pointer that was freed
Problem: def_function() may return pointer that was freed.
Solution: Set "fp" to NULL after freeing it.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 25 May 2020 23:30:03 +0200 |
parents | fa41a7fbaf5c |
children | 697fcaa406af |
files | src/userfunc.c src/version.c |
diffstat | 2 files changed, 5 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/userfunc.c +++ b/src/userfunc.c @@ -3140,12 +3140,14 @@ def_function(exarg_T *eap, char_u *name_ if (fudi.fd_di == NULL) { vim_free(fp); + fp = NULL; goto erret; } if (dict_add(fudi.fd_dict, fudi.fd_di) == FAIL) { vim_free(fudi.fd_di); vim_free(fp); + fp = NULL; goto erret; } } @@ -3169,6 +3171,7 @@ def_function(exarg_T *eap, char_u *name_ else if (hash_add(&func_hashtab, UF2HIKEY(fp)) == FAIL) { vim_free(fp); + fp = NULL; goto erret; } fp->uf_refcount = 1;