changeset 17801:6582dda76821 v8.1.1897

patch 8.1.1897: may free memory twice when out of memory commit https://github.com/vim/vim/commit/f1552d07d715b437d941659479942c2543b02bd4 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Aug 21 12:54:18 2019 +0200 patch 8.1.1897: may free memory twice when out of memory Problem: May free memory twice when out of memory. Solution: Check that backslash_halve_save() returns a different pointer. (Dominique Pelle, closes #4847)
author Bram Moolenaar <Bram@vim.org>
date Wed, 21 Aug 2019 13:00:03 +0200
parents ecad47058bfc
children cc99d500cfe2
files src/cmdexpand.c src/misc1.c src/version.c
diffstat 3 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -646,17 +646,19 @@ showmatches(expand_T *xp, int wildmenu U
 		    {
 			char_u	*halved_slash;
 			char_u	*exp_path;
+			char_u	*path;
 
 			// Expansion was done before and special characters
 			// were escaped, need to halve backslashes.  Also
 			// $HOME has been replaced with ~/.
 			exp_path = expand_env_save_opt(files_found[k], TRUE);
-			halved_slash = backslash_halve_save(
-				exp_path != NULL ? exp_path : files_found[k]);
+			path = exp_path != NULL ? exp_path : files_found[k];
+			halved_slash = backslash_halve_save(path);
 			j = mch_isdir(halved_slash != NULL ? halved_slash
 							    : files_found[k]);
 			vim_free(exp_path);
-			vim_free(halved_slash);
+			if (halved_slash != path)
+			    vim_free(halved_slash);
 		    }
 		    else
 			// Expansion was done here, file names are literal.
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -4086,7 +4086,9 @@ gen_expand_wildcards(
 		addfile(&ga, t, flags | EW_DIR | EW_FILE);
 	    else
 		addfile(&ga, t, flags);
-	    vim_free(t);
+
+	    if (t != p)
+		vim_free(t);
 	}
 
 #if defined(FEAT_SEARCHPATH)
--- a/src/version.c
+++ b/src/version.c
@@ -766,6 +766,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1897,
+/**/
     1896,
 /**/
     1895,