Mercurial > vim
changeset 23936:a0e02766e06d v8.2.2510
patch 8.2.2510: internal error when popup with mask is zero height or width
Commit: https://github.com/vim/vim/commit/10ccfb2a17e736ace054b19dc712544b4e961671
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Feb 13 21:31:18 2021 +0100
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 https://github.com/vim/vim/issues/7831)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 13 Feb 2021 21:45:05 +0100 |
parents | 6668c783ba6f |
children | 0a317b1a93cd |
files | src/popupwin.c src/testdir/test_popupwin.vim src/version.c |
diffstat | 3 files changed, 26 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/popupwin.c +++ b/src/popupwin.c @@ -3331,8 +3331,12 @@ popup_update_mask(win_T *wp, int width, char_u *cells; 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; + } if (wp->w_popup_mask_cells != NULL && wp->w_popup_mask_height == height && wp->w_popup_mask_width == width)
--- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -825,6 +825,25 @@ func Test_popup_with_mask() " this was causing a crash call popup_create('test', #{mask: [[0, 0, 0, 0]]}) 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 func Test_popup_select()