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;
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    825,
+/**/
     824,
 /**/
     823,