diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-06-28 21:38:00 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-06-28 21:38:00 +0200 |
commit | d74af4227b4e961bbab6ec9aa36512464434a1ad (patch) | |
tree | 979ee5dfa85fc0390d5a7fe3538872c404e5d1a3 | |
parent | 711d02c96da996e3423a6518909687e1d45ce45a (diff) | |
download | vim-git-d74af4227b4e961bbab6ec9aa36512464434a1ad.tar.gz |
patch 8.1.1603: crash when using unknown highlighting in text propertyv8.1.1603
Problem: Crash when using unknown highlighting in text property.
Solution: Check for zero highlight ID.
-rw-r--r-- | src/screen.c | 4 | ||||
-rw-r--r-- | src/testdir/test_textprop.vim | 11 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/screen.c b/src/screen.c index 5136c1301..4c3ded2ca 100644 --- 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 index df060ea84..d7e77f985 100644 --- 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 index d44171dc6..26a9bf583 100644 --- 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, |