From d74af4227b4e961bbab6ec9aa36512464434a1ad Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 28 Jun 2019 21:38:00 +0200 Subject: [PATCH] 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. --- src/screen.c | 4 ++-- src/testdir/test_textprop.vim | 11 +++++++++++ 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 @@ -777,6 +777,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1603, /**/ 1602, /**/ -- 2.50.1