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
index 5136c13..4c3ded2 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -3171,7 +3171,7 @@
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 @@
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 df060ea..d7e77f9 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -792,6 +792,17 @@
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 d44171d..26a9bf5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1603,
+/**/
1602,
/**/
1601,