From 3089cb1e33072a1eab1503539dc6dab96075048d Mon Sep 17 00:00:00 2001 From: Matheus Izvekov Date: Tue, 8 Jul 2025 14:46:39 -0300 Subject: [PATCH] fix: crash on unimplemented when populating overloads destructor entry I am not sure why this is not seen in CI presently, but I can reproduce it when building mrdocs from the llvm version bundled in homebrew (currently 20.1.7). --- src/lib/Metadata/Finalizers/OverloadsFinalizer.cpp | 1 + src/lib/Metadata/Info/Overloads.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/lib/Metadata/Finalizers/OverloadsFinalizer.cpp b/src/lib/Metadata/Finalizers/OverloadsFinalizer.cpp index c9cf05ebda..e1db14cd82 100644 --- a/src/lib/Metadata/Finalizers/OverloadsFinalizer.cpp +++ b/src/lib/Metadata/Finalizers/OverloadsFinalizer.cpp @@ -105,6 +105,7 @@ foldOverloads(SymbolID const& contextId, std::vector& functionIds, boo MRDOCS_CHECK_OR_CONTINUE(recordInfoPtr); auto* function = recordInfoPtr->asFunctionPtr(); MRDOCS_CHECK_OR_CONTINUE(function); + MRDOCS_CHECK_OR_CONTINUE(function->Class != FunctionClass::Destructor); // Check if the FunctionInfo is unique std::ranges::subrange otherFunctionIds( diff --git a/src/lib/Metadata/Info/Overloads.cpp b/src/lib/Metadata/Info/Overloads.cpp index b76dfe6951..0fb1e3e4cd 100644 --- a/src/lib/Metadata/Info/Overloads.cpp +++ b/src/lib/Metadata/Info/Overloads.cpp @@ -44,6 +44,8 @@ merge(OverloadsInfo& I, OverloadsInfo&& Other) void addMember(OverloadsInfo& I, FunctionInfo const& Member) { + MRDOCS_ASSERT(Member.Class != FunctionClass::Destructor); + if (I.Members.empty()) { I.Name = Member.Name;