changeset 14208:4cb334816bb1 v8.1.0121

patch 8.1.0121: crash when using ballooneval related to 'vartabstop' commit https://github.com/vim/vim/commit/ca4b613c692b927c9345dc9e3d6be5de35266be2 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jun 28 12:05:11 2018 +0200 patch 8.1.0121: crash when using ballooneval related to 'vartabstop' Problem: Crash when using ballooneval related to 'vartabstop'. Solution: Initialize balloonEval->vts to NULL. (Markus Braun)
author Christian Brabandt <cb@256bit.org>
date Thu, 28 Jun 2018 12:15:06 +0200
parents 72a425590918
children 508f1664bd8d
files src/ex_cmds2.c src/gui.c src/gui_beval.c src/gui_w32.c src/version.c
diffstat 5 files changed, 10 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1419,7 +1419,7 @@ check_due_timer(void)
 	    bevalexpr_due_set = FALSE;
 	    if (balloonEval == NULL)
 	    {
-		balloonEval = (BalloonEval *)alloc(sizeof(BalloonEval));
+		balloonEval = (BalloonEval *)alloc_clear(sizeof(BalloonEval));
 		balloonEvalForTerm = TRUE;
 	    }
 	    if (balloonEval != NULL)
--- a/src/gui.c
+++ b/src/gui.c
@@ -745,7 +745,12 @@ gui_init(void)
 	/* Always create the Balloon Evaluation area, but disable it when
 	 * 'ballooneval' is off. */
 	if (balloonEval != NULL)
+	{
+# ifdef FEAT_VARTABS
+	    vim_free(balloonEval->vts);
+# endif
 	    vim_free(balloonEval);
+	}
 	balloonEvalForTerm = FALSE;
 # ifdef FEAT_GUI_GTK
 	balloonEval = gui_mch_create_beval_area(gui.drawarea, NULL,
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -111,28 +111,19 @@ gui_mch_create_beval_area(
 	return NULL;
     }
 
-    beval = (BalloonEval *)alloc(sizeof(BalloonEval));
+    beval = (BalloonEval *)alloc_clear(sizeof(BalloonEval));
     if (beval != NULL)
     {
 #ifdef FEAT_GUI_GTK
 	beval->target = GTK_WIDGET(target);
-	beval->balloonShell = NULL;
-	beval->timerID = 0;
 #else
 	beval->target = (Widget)target;
-	beval->balloonShell = NULL;
-	beval->timerID = (XtIntervalId)NULL;
 	beval->appContext = XtWidgetToApplicationContext((Widget)target);
 #endif
 	beval->showState = ShS_NEUTRAL;
-	beval->x = 0;
-	beval->y = 0;
 	beval->msg = mesg;
 	beval->msgCB = mesgCB;
 	beval->clientData = clientData;
-#ifdef FEAT_VARTABS
-	beval->vts = NULL;
-#endif
 
 	/*
 	 * Set up event handler which will keep its eyes on the pointer,
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -8922,28 +8922,21 @@ gui_mch_create_beval_area(
 	return NULL;
     }
 
-    beval = (BalloonEval *)alloc(sizeof(BalloonEval));
+    beval = (BalloonEval *)alloc_clear(sizeof(BalloonEval));
     if (beval != NULL)
     {
 	beval->target = s_textArea;
-	beval->balloon = NULL;
 
 	beval->showState = ShS_NEUTRAL;
-	beval->x = 0;
-	beval->y = 0;
 	beval->msg = mesg;
 	beval->msgCB = mesgCB;
 	beval->clientData = clientData;
-#ifdef FEAT_VARTABS
-	beval->vts = NULL;
-#endif
 
 	InitCommonControls();
 	cur_beval = beval;
 
 	if (p_beval)
 	    gui_mch_enable_beval_area(beval);
-
     }
     return beval;
 }
--- a/src/version.c
+++ b/src/version.c
@@ -790,6 +790,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    121,
+/**/
     120,
 /**/
     119,