diff src/vim9execute.c @ 22612:b08f435d5b86 v8.2.1854

patch 8.2.1854: Vim9: crash when throwing exception for NULL string Commit: https://github.com/vim/vim/commit/1e021e63c565bbb30783a557b4e883cc27f56403 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Oct 16 20:25:23 2020 +0200 patch 8.2.1854: Vim9: crash when throwing exception for NULL string Problem: Vim9: crash when throwing exception for NULL string. (Dhiraj Mishra) Solution: Handle NULL string like empty string. (closes #7139)
author Bram Moolenaar <Bram@vim.org>
date Fri, 16 Oct 2020 20:30:04 +0200
parents 107eae953b87
children 048a3033d19c
line wrap: on
line diff
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1381,6 +1381,8 @@ call_def_function(
 		tv = STACK_TV_BOT(0);
 		tv->v_type = VAR_STRING;
 		tv->v_lock = 0;
+		// This may result in NULL, which should be equivalent to an
+		// empty string.
 		tv->vval.v_string = get_reg_contents(
 					  iptr->isn_arg.number, GREG_EXPR_SRC);
 		++ectx.ec_stack.ga_len;
@@ -2082,6 +2084,13 @@ call_def_function(
 	    case ISN_THROW:
 		--ectx.ec_stack.ga_len;
 		tv = STACK_TV_BOT(0);
+		if (tv->vval.v_string == NULL
+				       || *skipwhite(tv->vval.v_string) == NUL)
+		{
+		    emsg(_(e_throw_with_empty_string));
+		    goto failed;
+		}
+
 		if (throw_exception(tv->vval.v_string, ET_USER, NULL) == FAIL)
 		{
 		    vim_free(tv->vval.v_string);