changeset 19548:9a9ca0e622c8 v8.2.0331

patch 8.2.0331: internal error when using test_void() and test_unknown() Commit: https://github.com/vim/vim/commit/7c215c58936cbebd4132ad6112d04db54b7c153e Author: Bram Moolenaar <Bram@vim.org> Date: Sat Feb 29 13:43:27 2020 +0100 patch 8.2.0331: internal error when using test_void() and test_unknown() Problem: Internal error when using test_void() and test_unknown(). (Dominique Pelle) Solution: Give a normal error.
author Bram Moolenaar <Bram@vim.org>
date Sat, 29 Feb 2020 13:45:04 +0100
parents 2d657ba32b83
children 640445ef649f
files src/evalfunc.c src/testdir/test_functions.vim src/testdir/test_vimscript.vim src/version.c
diffstat 4 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -1890,7 +1890,10 @@ f_empty(typval_T *argvars, typval_T *ret
 #endif
 	case VAR_UNKNOWN:
 	case VAR_VOID:
-	    internal_error("f_empty(UNKNOWN)");
+	    // Let's not use internal_error() here, otherwise
+	    // empty(test_unknown()) with ABORT_ON_INTERNAL_ERROR defined makes
+	    // Vim abort.
+	    semsg(_(e_intern2), "f_empty(UNKNOWN)");
 	    n = TRUE;
 	    break;
     }
@@ -8275,7 +8278,10 @@ f_type(typval_T *argvars, typval_T *rett
 	case VAR_BLOB:    n = VAR_TYPE_BLOB; break;
 	case VAR_UNKNOWN:
 	case VAR_VOID:
-	     internal_error("f_type(UNKNOWN)");
+	     // Let's not use internal_error() here, otherwise
+	     // empty(test_unknown()) with ABORT_ON_INTERNAL_ERROR defined
+	     // makes Vim abort.
+	     semsg(_(e_intern2), "f_type(UNKNOWN)");
 	     n = -1;
 	     break;
     }
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -58,6 +58,9 @@ func Test_empty()
 
   call assert_equal(0, empty(function('Test_empty')))
   call assert_equal(0, empty(function('Test_empty', [0])))
+
+  call assert_fails("call empty(test_void())", 'E685:')
+  call assert_fails("call empty(test_unknown())", 'E685:')
 endfunc
 
 func Test_len()
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -1165,6 +1165,8 @@ func Test_type()
     call assert_equal(v:t_none, type(v:none))
     call assert_equal(v:t_none, type(v:null))
 
+    call assert_fails("call type(test_void())", 'E685:')
+    call assert_fails("call type(test_unknown())", 'E685:')
 
     call assert_equal(0, 0 + v:false)
     call assert_equal(1, 0 + v:true)
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    331,
+/**/
     330,
 /**/
     329,