comparison src/vim9type.c @ 31612:c467d6e70972 v9.0.1138

patch 9.0.1138: crash when expecting varargs but it is something else Commit: https://github.com/vim/vim/commit/36818a9daafbcb8e3b06be7b07f52b2d00a61746 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jan 3 12:33:26 2023 +0000 patch 9.0.1138: crash when expecting varargs but it is something else Problem: Crash when expecting varargs but it is something else. Solution: Only use the member when the type is a list. (closes https://github.com/vim/vim/issues/11774)
author Bram Moolenaar <Bram@vim.org>
date Tue, 03 Jan 2023 13:45:04 +0100
parents 67d9fbe516a3
children f3c7e573b7be
comparison
equal deleted inserted replaced
31611:193bddb8283e 31612:c467d6e70972
930 else 930 else
931 tv = &argvars[i]; 931 tv = &argvars[i];
932 if (varargs && i >= type->tt_argcount - 1) 932 if (varargs && i >= type->tt_argcount - 1)
933 { 933 {
934 expected = type->tt_args[type->tt_argcount - 1]; 934 expected = type->tt_args[type->tt_argcount - 1];
935 if (expected != NULL) 935 if (expected != NULL && expected->tt_type == VAR_LIST)
936 expected = expected->tt_member; 936 expected = expected->tt_member;
937 if (expected == NULL)
938 expected = &t_any;
937 } 939 }
938 else 940 else
939 expected = type->tt_args[i]; 941 expected = type->tt_args[i];
940 if (check_typval_arg_type(expected, tv, NULL, i + 1) == FAIL) 942 if (check_typval_arg_type(expected, tv, NULL, i + 1) == FAIL)
941 return FAIL; 943 return FAIL;