diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 44247ad..565d897 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -550,6 +550,13 @@
   bl[-2] = 0x66
   assert_equal(0z77226644, bl)
 
+  lines =<< trim END
+      g:val = '22'
+      var bl = 0z11
+      bl[1] = g:val
+  END
+  v9.CheckDefExecAndScriptFailure(lines, 'E1030: Using a String as a Number: "22"')
+
   # should not read the next line when generating "a.b"
   var a = {}
   a.b = {}
@@ -1233,12 +1240,18 @@
   var lines =<< trim END
       vim9script
       var l: list<number>
+      var li = [1, 2]
       var bl: blob
+      var bli = 0z12
       var d: dict<number>
+      var di = {'a': 1, 'b': 2}
       def Echo()
         assert_equal([], l)
+        assert_equal([1, 2], li)
         assert_equal(0z, bl)
+        assert_equal(0z12, bli)
         assert_equal({}, d)
+        assert_equal({'a': 1, 'b': 2}, di)
       enddef
       Echo()
   END
@@ -1502,6 +1515,30 @@
   END
   v9.CheckDefAndScriptSuccess(lines)
 
+  lines =<< trim END
+      var l = [1, 2]
+      g:idx = 'x'
+      l[g:idx : 1] = [0]
+      echo l
+  END
+  v9.CheckDefExecAndScriptFailure(lines, 'E1030: Using a String as a Number: "x"')
+
+  lines =<< trim END
+      var l = [1, 2]
+      g:idx = 3
+      l[g:idx : 1] = [0]
+      echo l
+  END
+  v9.CheckDefExecAndScriptFailure(lines, 'E684: list index out of range: 3')
+
+  lines =<< trim END
+      var l = [1, 2]
+      g:idx = 'y'
+      l[1 : g:idx] = [0]
+      echo l
+  END
+  v9.CheckDefExecAndScriptFailure(lines, ['E1012: Type mismatch; expected number but got string', 'E1030: Using a String as a Number: "y"'])
+
   v9.CheckDefFailure(["var l: list<number> = ['', true]"], 'E1012: Type mismatch; expected list<number> but got list<any>', 1)
   v9.CheckDefFailure(["var l: list<list<number>> = [['', true]]"], 'E1012: Type mismatch; expected list<list<number>> but got list<list<any>>', 1)
 enddef
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index f9cb62c..4aad9c9 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -2782,6 +2782,23 @@
 
   v9.CheckDefAndScriptSuccess(lines)
 
+  lines =<< trim END
+      vim9script
+
+      def PosIdx(s: string): string
+        return s[1]
+      enddef
+      def NegIdx(s: string): string
+        return s[-1]
+      enddef
+
+      set enc=latin1
+      assert_equal("\xe4", PosIdx("a\xe4\xe5"))
+      assert_equal("\xe5", NegIdx("a\xe4\xe5"))
+      set enc=utf-8
+  END
+  v9.CheckScriptSuccess(lines)
+
   v9.CheckDefExecAndScriptFailure(['echo g:testblob[2]'], 'E979:', 1)
   v9.CheckDefExecAndScriptFailure(['echo g:testblob[-3]'], 'E979:', 1)
 
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 7488397..866cf4c 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -550,6 +550,44 @@
   unlet g:counter
 enddef
 
+def Test_call_ufunc_failure()
+  var lines =<< trim END
+      vim9script
+      def Tryit()
+        g:Global(1, 2, 3)
+      enddef
+
+      func g:Global(a, b, c)
+        echo a:a a:b a:c
+      endfunc
+
+      defcompile
+
+      func! g:Global(a, b)
+        echo a:a a:b 
+      endfunc
+      Tryit()
+  END
+  v9.CheckScriptFailure(lines, 'E118: Too many arguments for function: Global')
+  delfunc g:Global
+
+  lines =<< trim END
+      vim9script
+
+      g:Ref = function('len')
+      def Tryit()
+        g:Ref('x')
+      enddef
+
+      defcompile
+
+      g:Ref = function('add')
+      Tryit()
+  END
+  v9.CheckScriptFailure(lines, 'E119: Not enough arguments for function: add')
+  unlet g:Ref
+enddef
+
 def s:MyVarargs(arg: string, ...rest: list<string>): string
   var res = arg
   for s in rest
diff --git a/src/version.c b/src/version.c
index 9ba8bb9..c64bd83 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4484,
+/**/
     4483,
 /**/
     4482,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index beca9e7..a7b76c6 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1027,7 +1027,7 @@
     {
 	int func_idx = find_internal_func(name);
 
-	if (func_idx < 0)
+	if (func_idx < 0)  // Impossible?
 	    return FAIL;
 	if (check_internal_func(func_idx, argcount) < 0)
 	    return FAIL;
@@ -1452,8 +1452,6 @@
     char_u		*p;
     char_u		*line;
 
-    if (*sp->nextline == NUL)
-	return NULL;
     p = vim_strchr(sp->nextline, '\n');
     if (p == NULL)
     {
@@ -1911,11 +1909,11 @@
 	    else
 		n2 = (long)tv_get_number_chk(tv_idx2, &error);
 	    if (error)
-		status = FAIL;
+		status = FAIL; // cannot happen?
 	    else
 	    {
 		listitem_T *li1 = check_range_index_one(
-			tv_dest->vval.v_list, &n1, FALSE);
+					     tv_dest->vval.v_list, &n1, FALSE);
 
 		if (li1 == NULL)
 		    status = FAIL;
