[clang-tidy] Fix use-after-free in UseNullptrCheck.
llvm-svn: 245524
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp
index 3e45969..3f3ff99 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp
@@ -12,7 +12,6 @@
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/Lex/Lexer.h"
-#include "llvm/ADT/StringExtras.h"
using namespace clang;
using namespace clang::ast_matchers;
@@ -441,14 +440,13 @@
};
UseNullptrCheck::UseNullptrCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {
- StringRef MacrosStr = Options.get("NullMacros", "NULL");
- MacrosStr.split(NullMacros, ",");
+ : ClangTidyCheck(Name, Context),
+ NullMacrosStr(Options.get("NullMacros", "NULL")) {
+ StringRef(NullMacrosStr).split(NullMacros, ",");
}
void UseNullptrCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
- Options.store(Opts, "NullMacros",
- llvm::join(NullMacros.begin(), NullMacros.end(), ","));
+ Options.store(Opts, "NullMacros", NullMacrosStr);
}
void UseNullptrCheck::registerMatchers(MatchFinder *Finder) {
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
index 40b9093..4b33f1e 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
@@ -24,6 +24,7 @@
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
private:
+ const std::string NullMacrosStr;
SmallVector<StringRef, 1> NullMacros;
};