]> granicus.if.org Git - vim/commitdiff
patch 8.2.3381: crash when using NULL list with sign functions v8.2.3381
authorBram Moolenaar <Bram@vim.org>
Sat, 28 Aug 2021 12:42:25 +0000 (14:42 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 28 Aug 2021 12:42:25 +0000 (14:42 +0200)
Problem:    Crash when using NULL list with sign functions.
Solution:   Handle a NULL list like an empty list. (issue #8260)

src/globals.h
src/testdir/test_signs.vim
src/version.c

index 6d9741b6a186da4a5dc5d34d35929b270a74bc8a..b64e5cb613ceb5e95aa8c1c94ee73ec2c27a920d 100644 (file)
@@ -1902,7 +1902,7 @@ EXTERN int channel_need_redraw INIT(= FALSE);
 #endif
 
 #define FOR_ALL_LIST_ITEMS(l, li) \
-    for ((li) = (l)->lv_first; (li) != NULL; (li) = (li)->li_next)
+    for ((li) = (l) == NULL ? NULL : (l)->lv_first; (li) != NULL; (li) = (li)->li_next)
 
 // While executing a regexp and set to OPTION_MAGIC_ON or OPTION_MAGIC_OFF this
 // overrules p_magic.  Otherwise set to OPTION_MAGIC_NOT_SET.
index 738eebf4d0bfa3018ce033f40248d60afee13674..b77725c7d160e6c1f4d91adee1f57a72c842eb9f 100644 (file)
@@ -2012,4 +2012,11 @@ func Test_sign_funcs_multi()
   call delete("Xsign")
 endfunc
 
+func Test_sign_null_list()
+  eval test_null_list()->sign_define()
+  eval test_null_list()->sign_placelist()
+  eval test_null_list()->sign_undefine()
+  eval test_null_list()->sign_unplacelist()
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
index e9a04e2ca882688b29ba331eea5ce9ef8b2de0d7..1fffa738f362eec9ae8bf70556e260a330a4dc9f 100644 (file)
@@ -755,6 +755,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3381,
 /**/
     3380,
 /**/