diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-03-27 18:44:40 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-03-27 18:44:40 +0200 |
commit | 89c64d557dbe0bacfdd7b2872411b00cc1523d85 (patch) | |
tree | ad9bc85ddd50df9c35a24b9baef38ad4c2aa5e67 /src | |
parent | ea6553bec340920d8a09c7210cdc2d218e25ace2 (diff) | |
download | vim-89c64d557dbe0bacfdd7b2872411b00cc1523d85.zip |
patch 7.4.1664
Problem: Crash in :cgetexpr.
Solution: Check for NULL pointer. (Dominique) Add a test.
Diffstat (limited to 'src')
-rw-r--r-- | src/quickfix.c | 3 | ||||
-rw-r--r-- | src/testdir/test_quickfix.vim | 5 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 9 insertions, 1 deletions
diff --git a/src/quickfix.c b/src/quickfix.c index c2ff55a8c..00762bda4 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -532,7 +532,8 @@ qf_init_ext( else if (tv->v_type == VAR_LIST) { /* Get the next line from the supplied list */ - while (p_li && p_li->li_tv.v_type != VAR_STRING) + while (p_li && (p_li->li_tv.v_type != VAR_STRING + || p_li->li_tv.vval.v_string == NULL)) p_li = p_li->li_next; /* Skip non-string items */ if (!p_li) /* End of the list */ diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim index 3908ce093..8da1b6fff 100644 --- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -692,3 +692,8 @@ func Test_caddbuffer_to_empty() endtry quit! endfunc + +func Test_cgetexpr_works() + " this must not crash Vim + cgetexpr [$x] +endfunc diff --git a/src/version.c b/src/version.c index f21fb6bb1..e925e413a 100644 --- a/src/version.c +++ b/src/version.c @@ -749,6 +749,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1664, +/**/ 1663, /**/ 1662, |