# HG changeset patch # User Christian Brabandt # Date 1530180906 -7200 # Node ID 4cb334816bb1ea635bd868a5fc76461b28ec31be # Parent 72a4255909189aa3ffc84fbb7df145241b96bdf4 patch 8.1.0121: crash when using ballooneval related to 'vartabstop' commit https://github.com/vim/vim/commit/ca4b613c692b927c9345dc9e3d6be5de35266be2 Author: Bram Moolenaar 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) diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c --- 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) diff --git a/src/gui.c b/src/gui.c --- 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, diff --git a/src/gui_beval.c b/src/gui_beval.c --- 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, diff --git a/src/gui_w32.c b/src/gui_w32.c --- 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; } diff --git a/src/version.c b/src/version.c --- 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,