diff options
-rw-r--r-- | lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp | 2 | ||||
-rw-r--r-- | lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp index a098f129a1d..932db17b964 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp @@ -640,6 +640,8 @@ static const llvm::StringMap<tok::TokenKind> &GetKeywordsMap() { } void CPlusPlusNameParser::ExtractTokens() { + if (m_text.empty()) + return; clang::Lexer lexer(clang::SourceLocation(), GetLangOptions(), m_text.data(), m_text.data(), m_text.data() + m_text.size()); const auto &kw_map = GetKeywordsMap(); diff --git a/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp b/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp index 3047bea6bce..150bef1590f 100644 --- a/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp +++ b/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp @@ -6,6 +6,7 @@ // //===----------------------------------------------------------------------===// #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" +#include "Plugins/Language/CPlusPlus/CPlusPlusNameParser.h" #include "gmock/gmock.h" #include "gtest/gtest.h" @@ -192,3 +193,8 @@ TEST(CPlusPlusLanguage, FindAlternateFunctionManglings) { EXPECT_THAT(FindAlternate("_ZN1A1fEai"), Contains("_ZN1A1fEci")); EXPECT_THAT(FindAlternate("_bogus"), IsEmpty()); } + +TEST(CPlusPlusLanguage, CPlusPlusNameParser) { + // Don't crash. + CPlusPlusNameParser((const char *)nullptr); +} |