From 2aef06d3447f048ac4c9c3d2c67d643523a74993 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Wed, 22 Jul 2009 20:55:49 +0000 Subject: [PATCH] Fix some memory allocation/deallocation issues git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76783 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AST/DeclCXX.cpp | 7 +++---- lib/Sema/SemaDeclCXX.cpp | 4 ++-- lib/Sema/SemaTemplate.cpp | 1 + 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/AST/DeclCXX.cpp b/lib/AST/DeclCXX.cpp index fa9beb0c38..eb66c17bf8 100644 --- a/lib/AST/DeclCXX.cpp +++ b/lib/AST/DeclCXX.cpp @@ -131,10 +131,9 @@ CXXRecordDecl::setBases(ASTContext &C, CXXRecordDecl *VBaseClassDecl = cast(QT->getAsRecordType()->getDecl()); this->VBases[i] = - *new (C) CXXBaseSpecifier( - VBaseClassDecl->getSourceRange(), true, - VBaseClassDecl->getTagKind() == RecordDecl::TK_class, - UniqueVbases[i]->getAccessSpecifier(), QT); + CXXBaseSpecifier(VBaseClassDecl->getSourceRange(), true, + VBaseClassDecl->getTagKind() == RecordDecl::TK_class, + UniqueVbases[i]->getAccessSpecifier(), QT); } } } diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 3681709f91..3bb16572e9 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -497,7 +497,7 @@ bool Sema::AttachBaseSpecifiers(CXXRecordDecl *Class, CXXBaseSpecifier **Bases, // Delete the duplicate base class specifier; we're going to // overwrite its pointer later. - delete Bases[idx]; + Context.Deallocate(Bases[idx]); Invalid = true; } else { @@ -513,7 +513,7 @@ bool Sema::AttachBaseSpecifiers(CXXRecordDecl *Class, CXXBaseSpecifier **Bases, // Delete the remaining (good) base class specifiers, since their // data has been copied into the CXXRecordDecl. for (unsigned idx = 0; idx < NumGoodBases; ++idx) - delete Bases[idx]; + Context.Deallocate(Bases[idx]); return Invalid; } diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp index a55c956a2a..5f772bc22c 100644 --- a/lib/Sema/SemaTemplate.cpp +++ b/lib/Sema/SemaTemplate.cpp @@ -1080,6 +1080,7 @@ Sema::OwningExprResult Sema::ActOnTemplateIdExpr(TemplateTy TemplateD, // Translate the parser's template argument list in our AST format. llvm::SmallVector TemplateArgs; translateTemplateArguments(TemplateArgsIn, TemplateArgLocs, TemplateArgs); + TemplateArgsIn.release(); return BuildTemplateIdExpr(Template, TemplateNameLoc, LAngleLoc, TemplateArgs.data(), TemplateArgs.size(), -- 2.50.1