[Lldb-commits] [lldb] r362177 - Make CPlusPlusNameParser robust against nullptr StringRefs.
Adrian Prantl via lldb-commits
lldb-commits at lists.llvm.org
Thu May 30 17:18:43 PDT 2019
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);
+}
More information about the lldb-commits
mailing list