diff options
Diffstat (limited to 'clang/lib/AST/Stmt.cpp')
-rw-r--r-- | clang/lib/AST/Stmt.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/AST/Stmt.cpp b/clang/lib/AST/Stmt.cpp index ffc6c2e62a8..993dda71c98 100644 --- a/clang/lib/AST/Stmt.cpp +++ b/clang/lib/AST/Stmt.cpp @@ -42,9 +42,14 @@ const char *Stmt::getStmtClassName() const { return getStmtInfoTableEntry(sClass).Name; } -void Stmt::DestroyChildren() { +void Stmt::DestroyChildren(ASTContext& C) { for (child_iterator I = child_begin(), E = child_end(); I !=E; ++I) - delete *I; // Handles the case when *I == NULL. + if (Stmt* Child = *I) Child->Destroy(C); +} + +void Stmt::Destroy(ASTContext& C) { + DestroyChildren(C); + this->~Stmt(); } void Stmt::PrintStats() { |