[clangd] Fix use-after-free issues in TidyProvider.cpp (#114808)
This commit is contained in:
parent
1e9d0685c5
commit
8a1eba48ed
@ -46,7 +46,7 @@ public:
|
||||
[this](std::optional<llvm::StringRef> Data) {
|
||||
Value.reset();
|
||||
if (Data && !Data->empty()) {
|
||||
tidy::DiagCallback Diagnostics = [](const llvm::SMDiagnostic &D) {
|
||||
auto Diagnostics = [](const llvm::SMDiagnostic &D) {
|
||||
switch (D.getKind()) {
|
||||
case llvm::SourceMgr::DK_Error:
|
||||
elog("tidy-config error at {0}:{1}:{2}: {3}", D.getFilename(),
|
||||
@ -149,7 +149,7 @@ static void mergeCheckList(std::optional<std::string> &Checks,
|
||||
*Checks = llvm::join_items(",", *Checks, List);
|
||||
}
|
||||
|
||||
TidyProviderRef provideEnvironment() {
|
||||
TidyProvider provideEnvironment() {
|
||||
static const std::optional<std::string> User = [] {
|
||||
std::optional<std::string> Ret = llvm::sys::Process::GetEnv("USER");
|
||||
#ifdef _WIN32
|
||||
@ -167,7 +167,7 @@ TidyProviderRef provideEnvironment() {
|
||||
return [](tidy::ClangTidyOptions &, llvm::StringRef) {};
|
||||
}
|
||||
|
||||
TidyProviderRef provideDefaultChecks() {
|
||||
TidyProvider provideDefaultChecks() {
|
||||
// These default checks are chosen for:
|
||||
// - low false-positive rate
|
||||
// - providing a lot of value
|
||||
@ -251,7 +251,7 @@ TidyProvider disableUnusableChecks(llvm::ArrayRef<std::string> ExtraBadChecks) {
|
||||
};
|
||||
}
|
||||
|
||||
TidyProviderRef provideClangdConfig() {
|
||||
TidyProvider provideClangdConfig() {
|
||||
return [](tidy::ClangTidyOptions &Opts, llvm::StringRef) {
|
||||
const auto &CurTidyConfig = Config::current().Diagnostics.ClangTidy;
|
||||
if (!CurTidyConfig.Checks.empty())
|
||||
|
@ -30,11 +30,11 @@ using TidyProviderRef = llvm::function_ref<void(tidy::ClangTidyOptions &,
|
||||
TidyProvider combine(std::vector<TidyProvider> Providers);
|
||||
|
||||
/// Provider that just sets the defaults.
|
||||
TidyProviderRef provideEnvironment();
|
||||
TidyProvider provideEnvironment();
|
||||
|
||||
/// Provider that will enable a nice set of default checks if none are
|
||||
/// specified.
|
||||
TidyProviderRef provideDefaultChecks();
|
||||
TidyProvider provideDefaultChecks();
|
||||
|
||||
/// Provider the enables a specific set of checks and warnings as errors.
|
||||
TidyProvider addTidyChecks(llvm::StringRef Checks,
|
||||
@ -51,7 +51,7 @@ disableUnusableChecks(llvm::ArrayRef<std::string> ExtraBadChecks = {});
|
||||
TidyProvider provideClangTidyFiles(ThreadsafeFS &);
|
||||
|
||||
// Provider that uses clangd configuration files.
|
||||
TidyProviderRef provideClangdConfig();
|
||||
TidyProvider provideClangdConfig();
|
||||
|
||||
tidy::ClangTidyOptions getTidyOptionsForFile(TidyProviderRef Provider,
|
||||
llvm::StringRef Filename);
|
||||
|
Loading…
x
Reference in New Issue
Block a user