diff options
-rw-r--r-- | src/eval.c | 7 | ||||
-rw-r--r-- | src/testdir/test_messages.vim | 10 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 19 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index 2a2d9d463..6e88c5c21 100644 --- a/src/eval.c +++ b/src/eval.c @@ -5682,6 +5682,7 @@ tv_stringify(typval_T *varp, char_u *buf) { if (varp->v_type == VAR_LIST || varp->v_type == VAR_DICT + || varp->v_type == VAR_BLOB || varp->v_type == VAR_FUNC || varp->v_type == VAR_PARTIAL || varp->v_type == VAR_FLOAT) @@ -6057,6 +6058,12 @@ ex_execute(exarg_T *eap) p = tv_get_string_buf(&rettv, buf); else p = tv_stringify(&rettv, buf); + if (p == NULL) + { + clear_tv(&rettv); + ret = FAIL; + break; + } len = (int)STRLEN(p); if (ga_grow(&ga, len + 2) == FAIL) { diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim index 6bb553c36..3e7d63c7d 100644 --- a/src/testdir/test_messages.vim +++ b/src/testdir/test_messages.vim @@ -268,3 +268,13 @@ func Test_message_more() call term_sendkeys(buf, ':q!') call StopVimInTerminal(buf) endfunc + +func Test_null() + echom test_null_list() + echom test_null_dict() + echom test_null_blob() + echom test_null_job() + echom test_null_string() + echom test_null_channel() + echom test_null_partial() +endfunc diff --git a/src/version.c b/src/version.c index 1c68c1a46..ba690bcc5 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 */ /**/ + 101, +/**/ 100, /**/ 99, |