Mercurial > vim
changeset 17208:13d0753511fe v8.1.1603
patch 8.1.1603: crash when using unknown highlighting in text property
commit https://github.com/vim/vim/commit/d74af4227b4e961bbab6ec9aa36512464434a1ad
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 28 Jun 2019 21:45:05 +0200 |
parents | 026b6b81e913 |
children | 755469df71bc |
files | src/screen.c src/testdir/test_textprop.vim src/version.c |
diffstat | 3 files changed, 15 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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);
--- 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", {})