summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-06-28 21:38:00 +0200
committerBram Moolenaar <Bram@vim.org>2019-06-28 21:38:00 +0200
commitd74af4227b4e961bbab6ec9aa36512464434a1ad (patch)
tree979ee5dfa85fc0390d5a7fe3538872c404e5d1a3
parent711d02c96da996e3423a6518909687e1d45ce45a (diff)
downloadvim-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.c4
-rw-r--r--src/testdir/test_textprop.vim11
-rw-r--r--src/version.c2
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,