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,