0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

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)
This commit is contained in:
Bram Moolenaar
2018-06-28 12:05:11 +02:00
parent dc9e955fb0
commit ca4b613c69
5 changed files with 10 additions and 19 deletions

View File

@@ -1419,7 +1419,7 @@ check_due_timer(void)
bevalexpr_due_set = FALSE; bevalexpr_due_set = FALSE;
if (balloonEval == NULL) if (balloonEval == NULL)
{ {
balloonEval = (BalloonEval *)alloc(sizeof(BalloonEval)); balloonEval = (BalloonEval *)alloc_clear(sizeof(BalloonEval));
balloonEvalForTerm = TRUE; balloonEvalForTerm = TRUE;
} }
if (balloonEval != NULL) if (balloonEval != NULL)

View File

@@ -745,7 +745,12 @@ gui_init(void)
/* Always create the Balloon Evaluation area, but disable it when /* Always create the Balloon Evaluation area, but disable it when
* 'ballooneval' is off. */ * 'ballooneval' is off. */
if (balloonEval != NULL) if (balloonEval != NULL)
{
# ifdef FEAT_VARTABS
vim_free(balloonEval->vts);
# endif
vim_free(balloonEval); vim_free(balloonEval);
}
balloonEvalForTerm = FALSE; balloonEvalForTerm = FALSE;
# ifdef FEAT_GUI_GTK # ifdef FEAT_GUI_GTK
balloonEval = gui_mch_create_beval_area(gui.drawarea, NULL, balloonEval = gui_mch_create_beval_area(gui.drawarea, NULL,

View File

@@ -111,28 +111,19 @@ gui_mch_create_beval_area(
return NULL; return NULL;
} }
beval = (BalloonEval *)alloc(sizeof(BalloonEval)); beval = (BalloonEval *)alloc_clear(sizeof(BalloonEval));
if (beval != NULL) if (beval != NULL)
{ {
#ifdef FEAT_GUI_GTK #ifdef FEAT_GUI_GTK
beval->target = GTK_WIDGET(target); beval->target = GTK_WIDGET(target);
beval->balloonShell = NULL;
beval->timerID = 0;
#else #else
beval->target = (Widget)target; beval->target = (Widget)target;
beval->balloonShell = NULL;
beval->timerID = (XtIntervalId)NULL;
beval->appContext = XtWidgetToApplicationContext((Widget)target); beval->appContext = XtWidgetToApplicationContext((Widget)target);
#endif #endif
beval->showState = ShS_NEUTRAL; beval->showState = ShS_NEUTRAL;
beval->x = 0;
beval->y = 0;
beval->msg = mesg; beval->msg = mesg;
beval->msgCB = mesgCB; beval->msgCB = mesgCB;
beval->clientData = clientData; beval->clientData = clientData;
#ifdef FEAT_VARTABS
beval->vts = NULL;
#endif
/* /*
* Set up event handler which will keep its eyes on the pointer, * Set up event handler which will keep its eyes on the pointer,

View File

@@ -8922,28 +8922,21 @@ gui_mch_create_beval_area(
return NULL; return NULL;
} }
beval = (BalloonEval *)alloc(sizeof(BalloonEval)); beval = (BalloonEval *)alloc_clear(sizeof(BalloonEval));
if (beval != NULL) if (beval != NULL)
{ {
beval->target = s_textArea; beval->target = s_textArea;
beval->balloon = NULL;
beval->showState = ShS_NEUTRAL; beval->showState = ShS_NEUTRAL;
beval->x = 0;
beval->y = 0;
beval->msg = mesg; beval->msg = mesg;
beval->msgCB = mesgCB; beval->msgCB = mesgCB;
beval->clientData = clientData; beval->clientData = clientData;
#ifdef FEAT_VARTABS
beval->vts = NULL;
#endif
InitCommonControls(); InitCommonControls();
cur_beval = beval; cur_beval = beval;
if (p_beval) if (p_beval)
gui_mch_enable_beval_area(beval); gui_mch_enable_beval_area(beval);
} }
return beval; return beval;
} }

View File

@@ -789,6 +789,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
121,
/**/ /**/
120, 120,
/**/ /**/