mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.2600: Vim9: crash when putting an unknown type in a dictionary
Problem: Vim9: crash when putting an unknown type in a dictionary. (Yegappan Lakshmanan) Solution: Handle a NULL type pointer.
This commit is contained in:
parent
edba70703b
commit
93e1cae739
@ -340,6 +340,26 @@ def Test_extend_list_item_type()
|
|||||||
CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1)
|
CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1)
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
|
def Test_extend_with_error_function()
|
||||||
|
var lines =<< trim END
|
||||||
|
vim9script
|
||||||
|
def F()
|
||||||
|
{
|
||||||
|
var m = 10
|
||||||
|
}
|
||||||
|
echo m
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def Test()
|
||||||
|
var d: dict<any> = {}
|
||||||
|
d->extend({A: 10, Func: function('F', [])})
|
||||||
|
enddef
|
||||||
|
|
||||||
|
Test()
|
||||||
|
END
|
||||||
|
CheckScriptFailure(lines, 'E1001: Variable not found: m')
|
||||||
|
enddef
|
||||||
|
|
||||||
def Test_job_info_return_type()
|
def Test_job_info_return_type()
|
||||||
if has('job')
|
if has('job')
|
||||||
job_start(&shell)
|
job_start(&shell)
|
||||||
|
@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2600,
|
||||||
/**/
|
/**/
|
||||||
2599,
|
2599,
|
||||||
/**/
|
/**/
|
||||||
|
@ -919,6 +919,8 @@ equal_type(type_T *type1, type_T *type2)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (type1 == NULL || type2 == NULL)
|
||||||
|
return FALSE;
|
||||||
if (type1->tt_type != type2->tt_type)
|
if (type1->tt_type != type2->tt_type)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
switch (type1->tt_type)
|
switch (type1->tt_type)
|
||||||
@ -969,12 +971,12 @@ common_type(type_T *type1, type_T *type2, type_T **dest, garray_T *type_gap)
|
|||||||
|
|
||||||
// If either is VAR_UNKNOWN use the other type. An empty list/dict has no
|
// If either is VAR_UNKNOWN use the other type. An empty list/dict has no
|
||||||
// specific type.
|
// specific type.
|
||||||
if (type1->tt_type == VAR_UNKNOWN)
|
if (type1 == NULL || type1->tt_type == VAR_UNKNOWN)
|
||||||
{
|
{
|
||||||
*dest = type2;
|
*dest = type2;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (type2->tt_type == VAR_UNKNOWN)
|
if (type2 == NULL || type2->tt_type == VAR_UNKNOWN)
|
||||||
{
|
{
|
||||||
*dest = type1;
|
*dest = type1;
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user