diff --git a/lldb/include/lldb/Expression/DiagnosticManager.h b/lldb/include/lldb/Expression/DiagnosticManager.h --- a/lldb/include/lldb/Expression/DiagnosticManager.h +++ b/lldb/include/lldb/Expression/DiagnosticManager.h @@ -114,7 +114,8 @@ } void AddDiagnostic(std::unique_ptr diagnostic) { - m_diagnostics.push_back(std::move(diagnostic)); + if (diagnostic) + m_diagnostics.push_back(std::move(diagnostic)); } size_t Printf(DiagnosticSeverity severity, const char *format, ...) diff --git a/lldb/unittests/Expression/DiagnosticManagerTest.cpp b/lldb/unittests/Expression/DiagnosticManagerTest.cpp --- a/lldb/unittests/Expression/DiagnosticManagerTest.cpp +++ b/lldb/unittests/Expression/DiagnosticManagerTest.cpp @@ -75,6 +75,9 @@ TEST(DiagnosticManagerTest, GetStringNoDiags) { DiagnosticManager mgr; EXPECT_EQ("", mgr.GetString()); + std::unique_ptr empty; + mgr.AddDiagnostic(std::move(empty)); + EXPECT_EQ("", mgr.GetString()); } TEST(DiagnosticManagerTest, GetStringBasic) {