From: Ted Kremenek Date: Wed, 21 May 2008 15:53:55 +0000 (+0000) Subject: When destroying DeclStmts, also destroy the associated Decl (reclaim its memory). X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8e355f296a3ba45b94de49dbb18ae6a6e67df04c;p=clang When destroying DeclStmts, also destroy the associated Decl (reclaim its memory). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51379 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/Stmt.h b/include/clang/AST/Stmt.h index 8b29617fa0..c854bb5640 100644 --- a/include/clang/AST/Stmt.h +++ b/include/clang/AST/Stmt.h @@ -146,6 +146,8 @@ public: DeclStmt(ScopedDecl *D, SourceLocation startLoc, SourceLocation endLoc) : Stmt(DeclStmtClass), TheDecl(D), StartLoc(startLoc), EndLoc(endLoc) {} + virtual void Destroy(ASTContext& Ctx); + const ScopedDecl *getDecl() const { return TheDecl; } ScopedDecl *getDecl() { return TheDecl; } diff --git a/lib/AST/Stmt.cpp b/lib/AST/Stmt.cpp index 6ed9966135..b12518fa78 100644 --- a/lib/AST/Stmt.cpp +++ b/lib/AST/Stmt.cpp @@ -55,6 +55,11 @@ void Stmt::Destroy(ASTContext& C) { delete this; } +void DeclStmt::Destroy(ASTContext& C) { + TheDecl->Destroy(C); + Stmt::Destroy(C); +} + void Stmt::PrintStats() { // Ensure the table is primed. getStmtInfoTableEntry(Stmt::NullStmtClass);