summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-03-27 18:44:40 +0200
committerBram Moolenaar <Bram@vim.org>2016-03-27 18:44:40 +0200
commit89c64d557dbe0bacfdd7b2872411b00cc1523d85 (patch)
treead9bc85ddd50df9c35a24b9baef38ad4c2aa5e67
parentea6553bec340920d8a09c7210cdc2d218e25ace2 (diff)
downloadvim-git-89c64d557dbe0bacfdd7b2872411b00cc1523d85.tar.gz
patch 7.4.1664v7.4.1664
Problem: Crash in :cgetexpr. Solution: Check for NULL pointer. (Dominique) Add a test.
-rw-r--r--src/quickfix.c3
-rw-r--r--src/testdir/test_quickfix.vim5
-rw-r--r--src/version.c2
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,