patch 7.4.1136
Problem: Wrong argument to assert_exception() causes a crash. (reported by
Coverity)
Solution: Check for NULL pointer. Add a test.
diff --git a/src/eval.c b/src/eval.c
index 0d83f1d..34fdd67 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -9278,7 +9278,8 @@
assert_error(&ga);
ga_clear(&ga);
}
- else if (strstr((char *)vimvars[VV_EXCEPTION].vv_str, error) == NULL)
+ else if (error != NULL
+ && strstr((char *)vimvars[VV_EXCEPTION].vv_str, error) == NULL)
{
prepare_assert_error(&ga);
fill_assert_error(&ga, &argvars[1], NULL, &argvars[0],
diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim
index 25337a5..70a303f 100644
--- a/src/testdir/test_assert.vim
+++ b/src/testdir/test_assert.vim
@@ -18,6 +18,25 @@
call assert_equal([1, 2, 3], l)
endfunc
+func Test_assert_exception()
+ try
+ nocommand
+ catch
+ call assert_exception('E492:')
+ endtry
+
+ try
+ nocommand
+ catch
+ try
+ " illegal argument, get NULL for error
+ call assert_exception([])
+ catch
+ call assert_exception('E730:')
+ endtry
+ endtry
+endfunc
+
func Test_user_is_happy()
smile
sleep 300m
diff --git a/src/version.c b/src/version.c
index 843e741..30e6068 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1136,
+/**/
1135,
/**/
1134,