]> granicus.if.org Git - clang/commitdiff
Fix some memory allocation/deallocation issues
authorDouglas Gregor <dgregor@apple.com>
Wed, 22 Jul 2009 20:55:49 +0000 (20:55 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 22 Jul 2009 20:55:49 +0000 (20:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76783 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/DeclCXX.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaTemplate.cpp

index fa9beb0c3881e9878bdf67d3941a399c2d4a0135..eb66c17bf80660bf5b4fc9ebd249c756cabe6bb8 100644 (file)
@@ -131,10 +131,9 @@ CXXRecordDecl::setBases(ASTContext &C,
       CXXRecordDecl *VBaseClassDecl
         = cast<CXXRecordDecl>(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);
     }
   }
 }
index 3681709f91416d9410f99f4a0cf10ddfb86df33d..3bb16572e9e1a423deecef91a640339e329243d7 100644 (file)
@@ -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;
 }
index a55c956a2af586bf08530e7bb983bad8350b1b6b..5f772bc22c06f5fd6ee7dc48a7b031fa68b6e214 100644 (file)
@@ -1080,6 +1080,7 @@ Sema::OwningExprResult Sema::ActOnTemplateIdExpr(TemplateTy TemplateD,
   // Translate the parser's template argument list in our AST format.
   llvm::SmallVector<TemplateArgument, 16> TemplateArgs;
   translateTemplateArguments(TemplateArgsIn, TemplateArgLocs, TemplateArgs);
+  TemplateArgsIn.release();
   
   return BuildTemplateIdExpr(Template, TemplateNameLoc, LAngleLoc,
                              TemplateArgs.data(), TemplateArgs.size(),