changeset 26839:eb6d56ab4858 v8.2.3948

patch 8.2.3948: Vim9: failure with partial with unknown argument count Commit: https://github.com/vim/vim/commit/cfe3af284a26178f4838df7c7489b2a1edd4c3a1 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 30 13:59:20 2021 +0000 patch 8.2.3948: Vim9: failure with partial with unknown argument count Problem: Vim9: failure with partial with unknown argument count. Solution: Do not copy argument types if there aren't any.
author Bram Moolenaar <Bram@vim.org>
date Thu, 30 Dec 2021 15:00:05 +0100
parents 01acdfb78d91
children 1f49d1cd3100
files src/version.c src/vim9type.c
diffstat 2 files changed, 14 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3948,
+/**/
     3947,
 /**/
     3946,
--- a/src/vim9type.c
+++ b/src/vim9type.c
@@ -369,19 +369,22 @@ typval2type_int(typval_T *tv, int copyID
 		    if (type == NULL)
 			return NULL;
 		    *type = *ufunc->uf_func_type;
-		    type->tt_argcount -= tv->vval.v_partial->pt_argc;
-		    type->tt_min_argcount -= tv->vval.v_partial->pt_argc;
-		    if (type->tt_argcount == 0)
-			type->tt_args = NULL;
-		    else
+		    if (type->tt_argcount >= 0)
 		    {
-			int i;
+			type->tt_argcount -= tv->vval.v_partial->pt_argc;
+			type->tt_min_argcount -= tv->vval.v_partial->pt_argc;
+			if (type->tt_argcount == 0)
+			    type->tt_args = NULL;
+			else
+			{
+			    int i;
 
-			func_type_add_arg_types(type, type->tt_argcount,
+			    func_type_add_arg_types(type, type->tt_argcount,
 								     type_gap);
-			for (i = 0; i < type->tt_argcount; ++i)
-			    type->tt_args[i] = ufunc->uf_func_type->tt_args[
+			    for (i = 0; i < type->tt_argcount; ++i)
+				type->tt_args[i] = ufunc->uf_func_type->tt_args[
 					      i + tv->vval.v_partial->pt_argc];
+			}
 		    }
 		    return type;
 		}