Author: adrian Date: Thu May 30 17:18:42 2019 New Revision: 362177 URL: http://llvm.org/viewvc/llvm-project?rev=362177&view=rev Log: Make CPlusPlusNameParser robust against nullptr StringRefs.
There is likely also an underlying bug in all code that calls CPlusPlusNameParser with nullptrs, but this patch can also stand for itself. rdar://problem/49072829 Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp lldb/trunk/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp?rev=362177&r1=362176&r2=362177&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp (original) +++ lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp Thu May 30 17:18:42 2019 @@ -640,6 +640,8 @@ static const llvm::StringMap<tok::TokenK } 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(); Modified: lldb/trunk/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp?rev=362177&r1=362176&r2=362177&view=diff ============================================================================== --- lldb/trunk/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp (original) +++ lldb/trunk/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp Thu May 30 17:18:42 2019 @@ -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, FindAlternateFun EXPECT_THAT(FindAlternate("_ZN1A1fEai"), Contains("_ZN1A1fEci")); EXPECT_THAT(FindAlternate("_bogus"), IsEmpty()); } + +TEST(CPlusPlusLanguage, CPlusPlusNameParser) { + // Don't crash. + CPlusPlusNameParser((const char *)nullptr); +} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits