The might be either this: diff --git a/src/core/args.c b/src/core/args.c index c4f2696..4772034 100644 --- a/src/core/args.c +++ b/src/core/args.c @@ -677,7 +677,7 @@ MVMObject * MVM_args_slurpy_named(MVMThreadContext *tc, MVMArgProcContext *ctx) static void flatten_args(MVMThreadContext *tc, MVMArgProcContext *ctx) { MVMArgInfo arg_info; - MVMuint16 flag_pos = 0, arg_pos = 0, new_arg_pos = 0, + MVMuint32 flag_pos = 0, arg_pos = 0, new_arg_pos = 0, new_arg_flags_size = ctx->arg_count > 0x7FFF ? ctx->arg_count : ctx->arg_count * 2, new_args_size = new_arg_flags_size, i, new_flag_pos = 0, new_num_pos = 0; MVMCallsiteEntry *new_arg_flags;
Or this: diff --git a/src/core/args.c b/src/core/args.c index c4f2696..43a966a 100644 --- a/src/core/args.c +++ b/src/core/args.c @@ -702,7 +702,7 @@ static void flatten_args(MVMThreadContext *tc, MVMArgProcContext *ctx) { MVMint64 count = REPR(list)->elems(tc, STABLE(list), list, OBJECT_BODY(list)); MVMStorageSpec lss = REPR(list)->pos_funcs.get_elem_storage_spec(tc, STABLE(list)); - if ((MVMint64)new_arg_pos + count > 0xFFFF) { + if ((MVMint64)new_arg_pos + count > 0xC000) { MVM_exception_throw_adhoc(tc, "Too many arguments in flattening array."); }