comparison src/vim9type.c @ 31740:22a4824d7964 v9.0.1202

patch 9.0.1202: crash when iterating over list of objects Commit: https://github.com/vim/vim/commit/f450804e1438307c79a62053f8c32eef1508383a Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 15 16:54:57 2023 +0000 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)
author Bram Moolenaar <Bram@vim.org>
date Sun, 15 Jan 2023 18:00:03 +0100
parents 50241d494268
children f578bef02249
comparison
equal deleted inserted replaced
31739:edfc3b562968 31740:22a4824d7964
84 return copy; 84 return copy;
85 ((type_T **)seen_types->ga_data)[seen_types->ga_len * 2] = type; 85 ((type_T **)seen_types->ga_data)[seen_types->ga_len * 2] = type;
86 ((type_T **)seen_types->ga_data)[seen_types->ga_len * 2 + 1] = copy; 86 ((type_T **)seen_types->ga_data)[seen_types->ga_len * 2 + 1] = copy;
87 ++seen_types->ga_len; 87 ++seen_types->ga_len;
88 88
89 if (copy->tt_member != NULL) 89 if (copy->tt_member != NULL
90 && copy->tt_type != VAR_OBJECT && copy->tt_type != VAR_CLASS)
90 copy->tt_member = copy_type_deep_rec(copy->tt_member, 91 copy->tt_member = copy_type_deep_rec(copy->tt_member,
91 type_gap, seen_types); 92 type_gap, seen_types);
92 93
93 if (type->tt_args != NULL) 94 if (type->tt_args != NULL)
94 for (int i = 0; i < type->tt_argcount; ++i) 95 for (int i = 0; i < type->tt_argcount; ++i)