https://github.com/JDevlieghere updated https://github.com/llvm/llvm-project/pull/168979
>From 8807e1b34aba6f2fc2f9a2d3575390c360b16b43 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere <[email protected]> Date: Thu, 20 Nov 2025 17:08:27 -0800 Subject: [PATCH] [lldb] Add assert to NonNullSharedPtr move constructor As suggested by Augusto, add an assert to NonNullSharedPtr move constructor. --- lldb/include/lldb/Utility/NonNullSharedPtr.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lldb/include/lldb/Utility/NonNullSharedPtr.h b/lldb/include/lldb/Utility/NonNullSharedPtr.h index 7e12ce72c6238..d084e79759d1b 100644 --- a/lldb/include/lldb/Utility/NonNullSharedPtr.h +++ b/lldb/include/lldb/Utility/NonNullSharedPtr.h @@ -29,12 +29,14 @@ template <typename T> class NonNullSharedPtr : private std::shared_ptr<T> { public: NonNullSharedPtr(const std::shared_ptr<T> &t) : Base(t ? t : std::make_shared<T>()) { - assert(t && "NonNullSharedPtr initialized from NULL shared_ptr"); + assert(t && "NonNullSharedPtr constructed from nullptr"); } - NonNullSharedPtr(std::shared_ptr<T> &&t) - : Base(t ? std::move(t) : std::make_shared<T>()) { - // Can't assert on t as it's been moved-from. + NonNullSharedPtr(std::shared_ptr<T> &&t) : Base(std::move(t)) { + const auto b = static_cast<bool>(*this); + assert(b && "NonNullSharedPtr constructed from nullptr"); + if (!b) + Base::operator=(std::make_shared<T>()); } NonNullSharedPtr(const NonNullSharedPtr &other) : Base(other) {} _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
