summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2014-04-24 05:32:03 +0000
committerNico Weber <nicolasweber@gmx.de>2014-04-24 05:32:03 +0000
commit568dacc4aa018a2ea4e284c903ebdc2340bd20bc (patch)
tree9a8ed2947c4ca28ec7ad856f7423c2d2d00c1e2b /clang/lib/Frontend/VerifyDiagnosticConsumer.cpp
parentaacf0313a5076eedfff8395507c6617c2144d6bf (diff)
downloadbcm5719-llvm-568dacc4aa018a2ea4e284c903ebdc2340bd20bc.tar.gz
bcm5719-llvm-568dacc4aa018a2ea4e284c903ebdc2340bd20bc.zip
Don't leak invalid RegexDirectives. Probably a small part of PR19520.
llvm-svn: 207077
Diffstat (limited to 'clang/lib/Frontend/VerifyDiagnosticConsumer.cpp')
-rw-r--r--clang/lib/Frontend/VerifyDiagnosticConsumer.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp b/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp
index 0221a5550c0..407c1d32972 100644
--- a/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp
+++ b/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp
@@ -491,11 +491,12 @@ static bool ParseDirective(StringRef S, ExpectedData *ED, SourceManager &SM,
}
// Construct new directive.
- Directive *D = Directive::create(RegexKind, Pos, ExpectedLoc, Text,
- Min, Max);
+ std::unique_ptr<Directive> D(
+ Directive::create(RegexKind, Pos, ExpectedLoc, Text, Min, Max));
+
std::string Error;
if (D->isValid(Error)) {
- DL->push_back(D);
+ DL->push_back(D.release());
FoundDirective = true;
} else {
Diags.Report(Pos.getLocWithOffset(ContentBegin-PH.Begin),
@@ -880,5 +881,6 @@ Directive *Directive::create(bool RegexKind, SourceLocation DirectiveLoc,
}
}
- return new RegexDirective(DirectiveLoc, DiagnosticLoc, Text, Min, Max, RegexStr);
+ return new RegexDirective(DirectiveLoc, DiagnosticLoc, Text, Min, Max,
+ RegexStr);
}
OpenPOWER on IntegriCloud