aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-02-06 01:42:09 +0000
committerTed Kremenek <kremenek@apple.com>2009-02-06 01:42:09 +0000
commit11e5a7f626ddbc67b6e936ed5184fcdfc7ff274b (patch)
tree18c218bcc3af3425fbebb1a44e3ea966bfb5b458
parent5e83baaaaae70451822d35e2f7499391f5a10d5f (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.cpp8
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() {