diff --git a/plugins/devel/check-structures-sanity.cpp b/plugins/devel/check-structures-sanity.cpp index 05ad5dd87..9bad36e23 100644 --- a/plugins/devel/check-structures-sanity.cpp +++ b/plugins/devel/check-structures-sanity.cpp @@ -751,13 +751,20 @@ void Checker::check_bitvector(const ToCheck & item) void Checker::check_struct(const ToCheck & item) { - auto identity = static_cast(item.identity); - - for (auto field = identity->getFields(); field->mode != struct_field_info::END; field++) + for (auto identity = static_cast(item.identity); identity; identity = identity->getParent()) { - ToCheck child(item, std::string(".") + field->name, PTR_ADD(item.ptr, field->offset), field->type); + auto fields = identity->getFields(); + if (!fields) + { + continue; + } + + for (auto field = fields; field->mode != struct_field_info::END; field++) + { + ToCheck child(item, std::string(".") + field->name, PTR_ADD(item.ptr, field->offset), field->type); - queue_field(std::move(child), field); + queue_field(std::move(child), field); + } } }