patch 7.4.1565
Problem: Crash when assert_equal() runs into a NULL string.
Solution: Check for NULL. (Dominique) Add a test.
diff --git a/src/eval.c b/src/eval.c
index eadb802..425ab68 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -9240,6 +9240,12 @@
char_u *p;
char_u buf[NUMBUFLEN];
+ if (str == NULL)
+ {
+ ga_concat(gap, (char_u *)"NULL");
+ return;
+ }
+
for (p = str; *p != NUL; ++p)
switch (*p)
{
diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim
index 6d2f800..df2636d 100644
--- a/src/testdir/test_assert.vim
+++ b/src/testdir/test_assert.vim
@@ -48,6 +48,21 @@
call assert_equal(type([]), type(verrors))
endfunc
+func Test_compare_fail()
+ let s:v = {}
+ let s:x = {"a": s:v}
+ let s:v["b"] = s:x
+ let s:w = {"c": s:x, "d": ''}
+ try
+ call assert_equal(s:w, '')
+ catch
+ call assert_exception('E724:')
+ call assert_true(v:errors[0] =~ "Expected NULL but got ''")
+ call remove(v:errors, 0)
+ endtry
+endfunc
+
+
func Test_user_is_happy()
smile
sleep 300m
diff --git a/src/version.c b/src/version.c
index 3cab689..59c7714 100644
--- a/src/version.c
+++ b/src/version.c
@@ -744,6 +744,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1565,
+/**/
1564,
/**/
1563,