Mercurial > vim
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; }