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