# HG changeset patch # User Bram Moolenaar # Date 1561751105 -7200 # Node ID 13d0753511febb08ef3fc6442446a3dd25321352 # Parent 026b6b81e91322a4accc03a7d8f60448d1db6612 patch 8.1.1603: crash when using unknown highlighting in text property commit https://github.com/vim/vim/commit/d74af4227b4e961bbab6ec9aa36512464434a1ad Author: Bram Moolenaar Date: Fri Jun 28 21:38:00 2019 +0200 patch 8.1.1603: crash when using unknown highlighting in text property Problem: Crash when using unknown highlighting in text property. Solution: Check for zero highlight ID. diff --git a/src/screen.c b/src/screen.c --- a/src/screen.c +++ b/src/screen.c @@ -3171,7 +3171,7 @@ win_line( int row; /* row in the window, excl w_winrow */ int screen_row; /* row on the screen, incl w_winrow */ - char_u extra[18]; /* "%ld" and 'fdc' must fit in here */ + char_u extra[20]; /* "%ld" and 'fdc' must fit in here */ int n_extra = 0; /* number of extra chars */ char_u *p_extra = NULL; /* string of extra chars, plus NUL */ char_u *p_extra_free = NULL; /* p_extra needs to be freed */ @@ -4440,7 +4440,7 @@ win_line( proptype_T *pt = text_prop_type_by_id( wp->w_buffer, text_props[tpi].tp_type); - if (pt != NULL) + if (pt != NULL && pt->pt_hl_id > 0) { int pt_attr = syn_id2attr(pt->pt_hl_id); diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim --- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -792,6 +792,17 @@ func Test_textprop_empty_buffer() call prop_type_delete('comment') endfunc +" Adding a text property with invalid highlight should be ignored. +func Test_textprop_invalid_highlight() + call assert_fails("call prop_type_add('dni', {'highlight': 'DoesNotExist'})", 'E970:') + new + call setline(1, ['asdf','asdf']) + call prop_add(1, 1, {'length': 4, 'type': 'dni'}) + redraw + bwipe! + call prop_type_delete('dni') +endfunc + " Adding a text property to an empty buffer and then editing another func Test_textprop_empty_buffer_next() call prop_type_add("xxx", {}) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -778,6 +778,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1603, +/**/ 1602, /**/ 1601,