Mercurial > vim
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; |