summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-08-28 14:42:25 +0200
committerBram Moolenaar <Bram@vim.org>2021-08-28 14:42:25 +0200
commit5c56da4de8398566ef96122db44ec93e6c2d483a (patch)
tree0c7aac811e244588fec88c6243f2a255887f541d
parent60b6e6f6cc60ac99253e1c13bd0cae4ef0e43201 (diff)
downloadvim-git-5c56da4de8398566ef96122db44ec93e6c2d483a.tar.gz
patch 8.2.3381: crash when using NULL list with sign functionsv8.2.3381
Problem: Crash when using NULL list with sign functions. Solution: Handle a NULL list like an empty list. (issue #8260)
-rw-r--r--src/globals.h2
-rw-r--r--src/testdir/test_signs.vim7
-rw-r--r--src/version.c2
3 files changed, 10 insertions, 1 deletions
diff --git a/src/globals.h b/src/globals.h
index 6d9741b6a..b64e5cb61 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -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.
diff --git a/src/testdir/test_signs.vim b/src/testdir/test_signs.vim
index 738eebf4d..b77725c7d 100644
--- a/src/testdir/test_signs.vim
+++ b/src/testdir/test_signs.vim
@@ -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
diff --git a/src/version.c b/src/version.c
index e9a04e2ca..1fffa738f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3381,
+/**/
3380,
/**/
3379,