From: Douglas Gregor Date: Wed, 22 Jul 2009 20:55:49 +0000 (+0000) Subject: Fix some memory allocation/deallocation issues X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2aef06d3447f048ac4c9c3d2c67d643523a74993;p=clang Fix some memory allocation/deallocation issues git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76783 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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(),