diff --git a/src/strings.c b/src/strings.c
index 90429d3..e16b742 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -1044,8 +1044,11 @@
 	remove_funccal();
 }
 
+/*
+ * Implementation of "byteidx()" and "byteidxcomp()" functions
+ */
     static void
-byteidx(typval_T *argvars, typval_T *rettv, int comp UNUSED)
+byteidx_common(typval_T *argvars, typval_T *rettv, int comp UNUSED)
 {
     rettv->vval.v_number = -1;
 
@@ -1065,7 +1068,8 @@
 	utf16idx = tv_get_bool(&argvars[2]);
 	if (utf16idx < 0 || utf16idx > 1)
 	{
-	    semsg(_(e_using_number_as_bool_nr), utf16idx);
+	    if (utf16idx != -1)
+		semsg(_(e_using_number_as_bool_nr), utf16idx);
 	    return;
 	}
     }
@@ -1100,7 +1104,7 @@
     void
 f_byteidx(typval_T *argvars, typval_T *rettv)
 {
-    byteidx(argvars, rettv, FALSE);
+    byteidx_common(argvars, rettv, FALSE);
 }
 
 /*
@@ -1109,7 +1113,7 @@
     void
 f_byteidxcomp(typval_T *argvars, typval_T *rettv)
 {
-    byteidx(argvars, rettv, TRUE);
+    byteidx_common(argvars, rettv, TRUE);
 }
 
 /*
@@ -1419,7 +1423,10 @@
     if (argvars[1].v_type != VAR_UNKNOWN)
 	skipcc = tv_get_bool(&argvars[1]);
     if (skipcc < 0 || skipcc > 1)
-	semsg(_(e_using_number_as_bool_nr), skipcc);
+    {
+	if (skipcc != -1)
+	    semsg(_(e_using_number_as_bool_nr), skipcc);
+    }
     else
 	strchar_common(argvars, rettv, skipcc);
 }
@@ -1529,7 +1536,8 @@
 	    skipcc = tv_get_bool(&argvars[3]);
 	    if (skipcc < 0 || skipcc > 1)
 	    {
-		semsg(_(e_using_number_as_bool_nr), skipcc);
+		if (skipcc != -1)
+		    semsg(_(e_using_number_as_bool_nr), skipcc);
 		return;
 	    }
 	}
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim
index 4e02de0..b3a8c49 100644
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -160,6 +160,8 @@
       call assert_equal('edit', "editor"[-10 : 3])
   END
   call v9.CheckLegacyAndVim9Success(lines)
+
+  call assert_fails('echo strcharpart("", 0, 0, {})', ['E728:', 'E728:'])
 endfunc
 
 func Test_getreg_empty_list()
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 11cfcc9..f05ac15 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -1224,6 +1224,7 @@
   " error cases
   call assert_fails("call byteidx([], 0)", 'E730:')
   call assert_fails("call byteidx('abc', [])", 'E745:')
+  call assert_fails("call byteidx('abc', 0, {})", ['E728:', 'E728:'])
 endfunc
 
 " Test for byteidxcomp() using a character index
@@ -1263,6 +1264,7 @@
   " error cases
   call assert_fails("call byteidxcomp([], 0)", 'E730:')
   call assert_fails("call byteidxcomp('abc', [])", 'E745:')
+  call assert_fails("call byteidxcomp('abc', 0, {})", ['E728:', 'E728:'])
 endfunc
 
 " Test for byteidx() using a UTF-16 index
@@ -1623,6 +1625,7 @@
   " error cases
   call assert_equal(-1, utf16idx(test_null_string(), 0, v:true, v:true))
   call assert_fails('let l = utf16idx("ab", 0, v:false, [])', 'E1212:')
+  call assert_fails('echo strchars("", {})', ['E728:', 'E728:'])
 endfunc
 
 " Test for strutf16len()
diff --git a/src/version.c b/src/version.c
index 454e246..b24277d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1522,
+/**/
     1521,
 /**/
     1520,
