diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-02-06 01:42:09 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-02-06 01:42:09 +0000 |
commit | 11e5a7f626ddbc67b6e936ed5184fcdfc7ff274b (patch) | |
tree | 18c218bcc3af3425fbebb1a44e3ea966bfb5b458 | |
parent | 5e83baaaaae70451822d35e2f7499391f5a10d5f (diff) |
Use ASTContext's allocator to deallocate Stmt objects instead of using 'delete'. This fixes <rdar://problem/6561143>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63905 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/AST/Stmt.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/AST/Stmt.cpp b/lib/AST/Stmt.cpp index 74ed6e92c6..541bb0401c 100644 --- a/lib/AST/Stmt.cpp +++ b/lib/AST/Stmt.cpp @@ -15,6 +15,7 @@ #include "clang/AST/ExprCXX.h" #include "clang/AST/ExprObjC.h" #include "clang/AST/Type.h" +#include "clang/AST/ASTContext.h" using namespace clang; static struct StmtClassNameTable { @@ -52,13 +53,14 @@ void Stmt::Destroy(ASTContext& C) { DestroyChildren(C); // FIXME: Eventually all Stmts should be allocated with the allocator // in ASTContext, just like with Decls. - // this->~Stmt(); - delete this; + this->~Stmt(); + C.Deallocate((void *)this); } void DeclStmt::Destroy(ASTContext& C) { DG.Destroy(C); - delete this; + this->~DeclStmt(); + C.Deallocate((void *)this); } void Stmt::PrintStats() { |