Mercurial > vim
changeset 8550:56d0eb96c25a v7.4.1565
commit https://github.com/vim/vim/commit/f1551964448607f8222de2d8f0992ea43eb2fe67
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 15 Mar 2016 13:00:11 +0100 |
parents | 1b47edf4545a |
children | 6b0cf930fc96 |
files | src/eval.c src/testdir/test_assert.vim src/version.c |
diffstat | 3 files changed, 23 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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) {
--- 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