aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h8
-rw-r--r--lib/StaticAnalyzer/Core/PathDiagnostic.cpp6
2 files changed, 11 insertions, 3 deletions
diff --git a/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h b/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
index 9516fcea83..08b48e529b 100644
--- a/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
+++ b/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
@@ -44,6 +44,12 @@ class ExplodedNode;
//===----------------------------------------------------------------------===//
class PathDiagnostic;
+class PathDiagnosticPiece;
+
+class PathPieces : public std::deque<PathDiagnosticPiece *> {
+public:
+ ~PathPieces();
+};
class PathDiagnosticConsumer {
virtual void anchor();
@@ -475,7 +481,7 @@ public:
/// diagnostic. It represents an ordered-collection of PathDiagnosticPieces,
/// each which represent the pieces of the path.
class PathDiagnostic : public llvm::FoldingSetNode {
- std::deque<PathDiagnosticPiece*> path;
+ PathPieces path;
unsigned Size;
std::string BugType;
std::string Desc;
diff --git a/lib/StaticAnalyzer/Core/PathDiagnostic.cpp b/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
index 0d2c2e82d9..bdf2e16a4b 100644
--- a/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
+++ b/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
@@ -62,10 +62,12 @@ PathDiagnosticMacroPiece::~PathDiagnosticMacroPiece() {
PathDiagnostic::PathDiagnostic() : Size(0) {}
-PathDiagnostic::~PathDiagnostic() {
- for (iterator I = begin(), E = end(); I != E; ++I) delete &*I;
+PathPieces::~PathPieces() {
+ for (iterator I = begin(), E = end(); I != E; ++I) delete *I;
}
+PathDiagnostic::~PathDiagnostic() {}
+
void PathDiagnostic::resetPath(bool deletePieces) {
Size = 0;