1
0
forked from aniani/vim

patch 8.1.1649: Illegal memory access when closing popup window

Problem:    Illegal memory access when closing popup window.
Solution:   Get w_next before closing the window.
This commit is contained in:
Bram Moolenaar
2019-07-07 20:43:34 +02:00
parent 3f3e954d96
commit 3e35d05b1f
2 changed files with 12 additions and 3 deletions

View File

@@ -1437,6 +1437,7 @@ check_mouse_moved(win_T *wp, win_T *mouse_wp)
res.v_type = VAR_NUMBER;
res.vval.v_number = -2;
// Careful: this makes "wp" invalid.
popup_close_and_callback(wp, &res);
}
}
@@ -1447,7 +1448,7 @@ check_mouse_moved(win_T *wp, win_T *mouse_wp)
void
popup_handle_mouse_moved(void)
{
win_T *wp;
win_T *wp, *nextwp;
win_T *mouse_wp;
int row = mouse_row;
int col = mouse_col;
@@ -1455,10 +1456,16 @@ popup_handle_mouse_moved(void)
// find the window where the mouse is in
mouse_wp = mouse_find_win(&row, &col, FIND_POPUP);
for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
for (wp = first_popupwin; wp != NULL; wp = nextwp)
{
nextwp = wp->w_next;
check_mouse_moved(wp, mouse_wp);
for (wp = curtab->tp_first_popupwin; wp != NULL; wp = wp->w_next)
}
for (wp = curtab->tp_first_popupwin; wp != NULL; wp = nextwp)
{
nextwp = wp->w_next;
check_mouse_moved(wp, mouse_wp);
}
}
/*

View File

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