patch 8.2.3380: crash when using NULL string for funcref()
Problem: Crash when using NULL string for funcref().
Solution: Check for NULL argument. (issue #8260)
diff --git a/src/evalfunc.c b/src/evalfunc.c
index d6fb03e..287ca3c 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3932,6 +3932,11 @@
s = tv_get_string(&argvars[0]);
use_string = TRUE;
}
+ if (s == NULL)
+ {
+ semsg(_(e_invarg2), "NULL");
+ return;
+ }
if ((use_string && vim_strchr(s, AUTOLOAD_CHAR) == NULL) || is_funcref)
{
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim
index 597c022..080eee7 100644
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -501,6 +501,7 @@
let OneByRef = funcref("One", repeat(["foo"], 20))
call assert_fails('let OneByRef = funcref("One", repeat(["foo"], 21))', 'E118:')
call assert_fails('echo function("min") =~ function("min")', 'E694:')
+ call assert_fails('echo test_null_function()->funcref()', 'E475: Invalid argument: NULL')
endfunc
func Test_setmatches()
diff --git a/src/version.c b/src/version.c
index c2e07c6..e9a04e2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3380,
+/**/
3379,
/**/
3378,