changeset 29465:1ae3e2d691a0 v9.0.0074

patch 9.0.0074: Coverity warns for double free Commit: https://github.com/vim/vim/commit/34a1f779791fd4137547fa72addeb147b7704604 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jul 26 11:20:48 2022 +0100 patch 9.0.0074: Coverity warns for double free Problem: Coverity warns for double free. Solution: Reset cts_text_prop_count when freeing cts_text_props.
author Bram Moolenaar <Bram@vim.org>
date Tue, 26 Jul 2022 12:30:05 +0200
parents 3a229fb63f78
children d5b1a7cece0a
files src/charset.c src/structs.h src/version.c
diffstat 3 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/charset.c
+++ b/src/charset.c
@@ -964,7 +964,10 @@ clear_chartabsize_arg(chartabsize_T *cts
 {
 #ifdef FEAT_PROP_POPUP
     if (cts->cts_text_prop_count > 0)
+    {
 	vim_free(cts->cts_text_props);
+	cts->cts_text_prop_count = 0;  // avoid double free
+    }
 #endif
 }
 
--- a/src/structs.h
+++ b/src/structs.h
@@ -4570,9 +4570,10 @@ typedef struct {
     char_u	*cts_line;	    // start of the line
     char_u	*cts_ptr;	    // current position in line
 #ifdef FEAT_PROP_POPUP
-    int		cts_text_prop_count;	// number of text props
-    textprop_T	*cts_text_props;	// text props (allocated) or NULL
-    char	cts_has_prop_with_text;  // TRUE if if a property inserts text
+    int		cts_text_prop_count;	// number of text props; when zero
+					// cts_text_props is not used
+    textprop_T	*cts_text_props;	// text props (allocated)
+    char	cts_has_prop_with_text; // TRUE if if a property inserts text
     int         cts_cur_text_width;     // width of current inserted text
 #endif
     int		cts_vcol;	    // virtual column at current position
--- a/src/version.c
+++ b/src/version.c
@@ -736,6 +736,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    74,
+/**/
     73,
 /**/
     72,