summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-03-15 13:33:55 +0100
committerBram Moolenaar <Bram@vim.org>2016-03-15 13:33:55 +0100
commit1abb502635c7f317e05a0cf3ea067101f9d684f5 (patch)
tree5795aacec573dc3d1b9f8f54834d325b782189fd
parent4f118be2bb987cdf313da879d2a93ae125e99202 (diff)
patch 7.4.1567v7.4.1567
Problem: Crash in assert_fails(). Solution: Check for NULL. (Dominique Pelle) Add a test.
-rw-r--r--src/eval.c3
-rw-r--r--src/testdir/test_assert.vim6
-rw-r--r--src/version.c2
3 files changed, 10 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c
index fd028ccce6..7776cc6c33 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -9386,7 +9386,8 @@ f_assert_fails(typval_T *argvars, typval_T *rettv UNUSED)
char_u buf[NUMBUFLEN];
char *error = (char *)get_tv_string_buf_chk(&argvars[1], buf);
- if (strstr((char *)vimvars[VV_ERRMSG].vv_str, error) == NULL)
+ if (error == NULL
+ || strstr((char *)vimvars[VV_ERRMSG].vv_str, error) == NULL)
{
prepare_assert_error(&ga);
fill_assert_error(&ga, &argvars[2], NULL, &argvars[1],
diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim
index df2636d7bc..2ac828b282 100644
--- a/src/testdir/test_assert.vim
+++ b/src/testdir/test_assert.vim
@@ -62,6 +62,12 @@ func Test_compare_fail()
endtry
endfunc
+func Test_assert_fail_fails()
+ call assert_fails('xxx', {})
+ call assert_true(v:errors[0] =~ "Expected {} but got 'E731:")
+ call remove(v:errors, 0)
+endfunc
+
func Test_user_is_happy()
smile
diff --git a/src/version.c b/src/version.c
index e4004f81c3..eecbfe1ed2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -744,6 +744,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1567,
+/**/
1566,
/**/
1565,