forked from aniani/vim
patch 9.0.1202: crash when iterating over list of objects
Problem: Crash when iterating over list of objects. Solution: Do not make a copy of tt_member for object or class. (closes #11823)
This commit is contained in:
@@ -219,6 +219,27 @@ def Test_assignment_with_operator()
|
||||
v9.CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Test_list_of_objects()
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
|
||||
class Foo
|
||||
def Add()
|
||||
enddef
|
||||
endclass
|
||||
|
||||
def ProcessList(fooList: list<Foo>)
|
||||
for foo in fooList
|
||||
foo.Add()
|
||||
endfor
|
||||
enddef
|
||||
|
||||
var l: list<Foo> = [Foo.new()]
|
||||
ProcessList(l)
|
||||
END
|
||||
v9.CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Test_class_default_new()
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
|
@@ -695,6 +695,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1202,
|
||||
/**/
|
||||
1201,
|
||||
/**/
|
||||
|
@@ -86,7 +86,8 @@ copy_type_deep_rec(type_T *type, garray_T *type_gap, garray_T *seen_types)
|
||||
((type_T **)seen_types->ga_data)[seen_types->ga_len * 2 + 1] = copy;
|
||||
++seen_types->ga_len;
|
||||
|
||||
if (copy->tt_member != NULL)
|
||||
if (copy->tt_member != NULL
|
||||
&& copy->tt_type != VAR_OBJECT && copy->tt_type != VAR_CLASS)
|
||||
copy->tt_member = copy_type_deep_rec(copy->tt_member,
|
||||
type_gap, seen_types);
|
||||
|
||||
|
Reference in New Issue
Block a user