diff --git a/src/nvim/mbyte.c b/src/nvim/mbyte.c index a345795bbe..e47901fde4 100644 --- a/src/nvim/mbyte.c +++ b/src/nvim/mbyte.c @@ -2782,7 +2782,7 @@ void f_setcellwidths(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) xfree(cw_table); cw_table = NULL; cw_table_size = 0; - return; + goto done; } // Note: use list_T instead of listitem_T so that TV_LIST_ITEM_NEXT can be used properly below. @@ -2879,6 +2879,7 @@ void f_setcellwidths(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) } xfree(cw_table_save); +done: changed_window_setting_all(); redraw_all_later(UPD_NOT_VALID); } diff --git a/test/old/testdir/test_utf8.vim b/test/old/testdir/test_utf8.vim index 51ac47f082..27b8ad0cce 100644 --- a/test/old/testdir/test_utf8.vim +++ b/test/old/testdir/test_utf8.vim @@ -228,6 +228,9 @@ func Test_setcellwidths() call setcellwidths([[0x2103, 0x2103, 2]]) redraw call assert_equal(19, wincol()) + call setcellwidths([]) + redraw + call assert_equal((aw == 'single') ? 10 : 19, wincol()) endfor set ambiwidth& isprint&