# HG changeset patch # User Christian Brabandt # Date 1458043211 -3600 # Node ID 56d0eb96c25a187359685040de8d30c70010c1de # Parent 1b47edf4545aac9c2d592ac8b22d1795d7612c4f commit https://github.com/vim/vim/commit/f1551964448607f8222de2d8f0992ea43eb2fe67 Author: Bram Moolenaar Date: Tue Mar 15 12:55:58 2016 +0100 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 --- a/src/eval.c +++ b/src/eval.c @@ -9240,6 +9240,12 @@ ga_concat_esc(garray_T *gap, char_u *str 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 --- a/src/testdir/test_assert.vim +++ b/src/testdir/test_assert.vim @@ -48,6 +48,21 @@ func Test_wrong_error_type() 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 --- 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 */ /**/ + 1565, +/**/ 1564, /**/ 1563,