diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/DeclObjC.cpp | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp index 5b59af9d953..b0d36dbab8d 100644 --- a/clang/lib/AST/DeclObjC.cpp +++ b/clang/lib/AST/DeclObjC.cpp @@ -115,22 +115,11 @@ void ObjCProtocolDecl::Destroy(ASTContext &C) { ObjCClassDecl *ObjCClassDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L, - ObjCInterfaceDecl **Elts, unsigned nElts) { + ObjCInterfaceDecl *const *Elts, + unsigned nElts) { return new (C) ObjCClassDecl(DC, L, Elts, nElts); } -ObjCClassDecl::ObjCClassDecl(DeclContext *DC, SourceLocation L, - ObjCInterfaceDecl **Elts, unsigned nElts) - : Decl(ObjCClass, DC, L) { - if (nElts) { - ForwardDecls = new ObjCInterfaceDecl*[nElts]; - memcpy(ForwardDecls, Elts, nElts*sizeof(ObjCInterfaceDecl*)); - } else { - ForwardDecls = 0; - } - NumForwardDecls = nElts; -} - void ObjCClassDecl::Destroy(ASTContext &C) { // FIXME: There is no clear ownership policy now for referenced @@ -141,9 +130,7 @@ void ObjCClassDecl::Destroy(ASTContext &C) { // obviating this problem. Because of this situation, referenced // ObjCInterfaceDecls are destroyed in ~TranslationUnit. - delete [] ForwardDecls; - ForwardDecls = 0; - + ForwardDecls.clear(); Decl::Destroy(C); } |