From 9c34e9e5841b5506821e40714d17d3bc22b62209 Mon Sep 17 00:00:00 2001 From: Ben Lubar Date: Wed, 12 Feb 2020 18:01:49 -0600 Subject: [PATCH] properly check fields of the full type heirarchy --- plugins/devel/check-structures-sanity.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) 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); + } } }