forked from aniani/vim
patch 8.2.2510: internal error when popup with mask is zero height or width
Problem: Internal error when popup with mask is zero height or width. Solution: Bail out if width or height is zero. (closes #7831)
This commit is contained in:
@@ -3331,8 +3331,12 @@ popup_update_mask(win_T *wp, int width, int height)
|
|||||||
char_u *cells;
|
char_u *cells;
|
||||||
int row, col;
|
int row, col;
|
||||||
|
|
||||||
if (wp->w_popup_mask == NULL)
|
if (wp->w_popup_mask == NULL || width == 0 || height == 0)
|
||||||
|
{
|
||||||
|
vim_free(wp->w_popup_mask_cells);
|
||||||
|
wp->w_popup_mask_cells = NULL;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
if (wp->w_popup_mask_cells != NULL
|
if (wp->w_popup_mask_cells != NULL
|
||||||
&& wp->w_popup_mask_height == height
|
&& wp->w_popup_mask_height == height
|
||||||
&& wp->w_popup_mask_width == width)
|
&& wp->w_popup_mask_width == width)
|
||||||
|
|||||||
@@ -825,6 +825,25 @@ func Test_popup_with_mask()
|
|||||||
" this was causing a crash
|
" this was causing a crash
|
||||||
call popup_create('test', #{mask: [[0, 0, 0, 0]]})
|
call popup_create('test', #{mask: [[0, 0, 0, 0]]})
|
||||||
call popup_clear()
|
call popup_clear()
|
||||||
|
|
||||||
|
" this was causing an internal error
|
||||||
|
enew
|
||||||
|
set nowrap
|
||||||
|
call repeat('x', &columns)->setline(1)
|
||||||
|
call prop_type_add('textprop', {})
|
||||||
|
call prop_add(1, 1, #{length: &columns, type: 'textprop'})
|
||||||
|
vsplit
|
||||||
|
let opts = popup_create('', #{textprop: 'textprop'})
|
||||||
|
\ ->popup_getoptions()
|
||||||
|
\ ->extend(#{mask: [[1, 1, 1, 1]]})
|
||||||
|
call popup_create('', opts)
|
||||||
|
redraw
|
||||||
|
|
||||||
|
close!
|
||||||
|
bwipe!
|
||||||
|
call prop_type_delete('textprop')
|
||||||
|
call popup_clear()
|
||||||
|
set wrap&
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_popup_select()
|
func Test_popup_select()
|
||||||
|
|||||||
@@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
2510,
|
||||||
/**/
|
/**/
|
||||||
2509,
|
2509,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user