]> granicus.if.org Git - vim/commitdiff
patch 8.1.1603: crash when using unknown highlighting in text property v8.1.1603
authorBram Moolenaar <Bram@vim.org>
Fri, 28 Jun 2019 19:38:00 +0000 (21:38 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 28 Jun 2019 19:38:00 +0000 (21:38 +0200)
Problem:    Crash when using unknown highlighting in text property.
Solution:   Check for zero highlight ID.

src/screen.c
src/testdir/test_textprop.vim
src/version.c

index 5136c1301f91994c4ee85addd75b28aa13845b8a..4c3ded2ca3a4a2303c68911f87340f63fc645f4a 100644 (file)
@@ -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);
 
index df060ea846c787a64f4e4b1dac1993876afa4b64..d7e77f985f5a878aa67cad6188f196b1c30202c4 100644 (file)
@@ -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", {})
index d44171dc67c9265babea41fe11fe8769fa105e1f..26a9bf583da00710186ba37e702c9736bf19c954 100644 (file)
@@ -777,6 +777,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1603,
 /**/
     1602,
 /**/