fix name for unnamed undeclared types

type->getAsTagDecl() may return null, e.g. in the following example:

struct Foo {
  struct {
    uint64_t len;
    uint64_t flags;
  } __attribute__((packed)) bars[BARS];
  ...
};
This commit is contained in:
Pogobanane
2024-05-31 22:00:20 +00:00
parent d385b87691
commit 3cff6593e6

View File

@@ -150,7 +150,13 @@ std::string to_string(const clang::QualType &type, const clang::ASTContext &ctx,
result = "(anonymous)";
else if (util::contains(result, "unnamed struct") ||
util::contains(result, "unnamed union")) {
result = common::get_tag_name(*type->getAsTagDecl());
auto declarationTag = type->getAsTagDecl();
if (declarationTag == NULL) {
result = "(unnamed undeclared)";
}
else {
result = common::get_tag_name(*declarationTag);
}
}
else if (util::contains(result, "anonymous struct") ||
util::contains(result, "anonymous union")) {