From: Bram Moolenaar Date: Tue, 15 Mar 2016 11:55:58 +0000 (+0100) Subject: patch 7.4.1565 X-Git-Tag: v7.4.1565 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f1551964448607f8222de2d8f0992ea43eb2fe67;p=vim 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 eadb802b3..425ab688f 100644 --- 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 index 6d2f80094..df2636d7b 100644 --- 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 index 3cab68979..59c7714c8 100644 --- a/src/version.c +++ b/src/version.c @@ -743,6 +743,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1565, /**/ 1564, /**/