diff options
| author | Aaron Ballman <aaron@aaronballman.com> | 2015-06-23 13:15:32 +0000 |
|---|---|---|
| committer | Aaron Ballman <aaron@aaronballman.com> | 2015-06-23 13:15:32 +0000 |
| commit | 8d3a7a56a944f6b8452cb8e21ba68a293c7f5202 (patch) | |
| tree | e7f2906cae208f6db629b25f46559dddb46ff5a1 /clang/lib/StaticAnalyzer/Core/BugReporter.cpp | |
| parent | 91d35a5e225c592a885ca993ce5628228ff26a49 (diff) | |
| download | bcm5719-llvm-8d3a7a56a944f6b8452cb8e21ba68a293c7f5202.tar.gz bcm5719-llvm-8d3a7a56a944f6b8452cb8e21ba68a293c7f5202.zip | |
Clarify pointer ownership semantics by hoisting the std::unique_ptr creation to the caller instead of hiding it in emitReport. NFC.
llvm-svn: 240400
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/BugReporter.cpp')
| -rw-r--r-- | clang/lib/StaticAnalyzer/Core/BugReporter.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/BugReporter.cpp b/clang/lib/StaticAnalyzer/Core/BugReporter.cpp index 97e97ef8c4d..a42b4ef2dbe 100644 --- a/clang/lib/StaticAnalyzer/Core/BugReporter.cpp +++ b/clang/lib/StaticAnalyzer/Core/BugReporter.cpp @@ -3224,10 +3224,7 @@ void BugReporter::Register(BugType *BT) { BugTypes = F.add(BugTypes, BT); } -void BugReporter::emitReport(BugReport* R) { - // To guarantee memory release. - std::unique_ptr<BugReport> UniqueR(R); - +void BugReporter::emitReport(std::unique_ptr<BugReport> R) { if (const ExplodedNode *E = R->getErrorNode()) { const AnalysisDeclContext *DeclCtx = E->getLocationContext()->getAnalysisDeclContext(); @@ -3258,11 +3255,11 @@ void BugReporter::emitReport(BugReport* R) { BugReportEquivClass* EQ = EQClasses.FindNodeOrInsertPos(ID, InsertPos); if (!EQ) { - EQ = new BugReportEquivClass(std::move(UniqueR)); + EQ = new BugReportEquivClass(std::move(R)); EQClasses.InsertNode(EQ, InsertPos); EQClassesVector.push_back(EQ); } else - EQ->AddReport(std::move(UniqueR)); + EQ->AddReport(std::move(R)); } @@ -3462,12 +3459,12 @@ void BugReporter::EmitBasicReport(const Decl *DeclWithIssue, // 'BT' is owned by BugReporter. BugType *BT = getBugTypeForName(CheckName, name, category); - BugReport *R = new BugReport(*BT, str, Loc); + auto R = llvm::make_unique<BugReport>(*BT, str, Loc); R->setDeclWithIssue(DeclWithIssue); for (ArrayRef<SourceRange>::iterator I = Ranges.begin(), E = Ranges.end(); I != E; ++I) R->addRange(*I); - emitReport(R); + emitReport(std::move(R)); } BugType *BugReporter::getBugTypeForName(CheckName CheckName, StringRef name, |

