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
--- 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,