diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-02-11 00:53:01 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-02-11 00:53:01 +0000 |
commit | da4abf11bf3dbc7c9fb921cb2f67cac9022e6021 (patch) | |
tree | 3d75c14e1e00deaad9e26e3ccce88a1383d88cfa /clang | |
parent | 5c73e918c5623554912d419e5ba72cabf5bbc8a4 (diff) | |
download | bcm5719-llvm-da4abf11bf3dbc7c9fb921cb2f67cac9022e6021.tar.gz bcm5719-llvm-da4abf11bf3dbc7c9fb921cb2f67cac9022e6021.zip |
Allocate 'ObjCMethodList' objects (owned by Sema) using Sema's BumpPtrAllocator. Previously they were not getting freed. Fixes <rdar://problem/7635663>.
llvm-svn: 95834
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Frontend/PCHReader.cpp | 8 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDeclObjC.cpp | 6 |
2 files changed, 10 insertions, 4 deletions
diff --git a/clang/lib/Frontend/PCHReader.cpp b/clang/lib/Frontend/PCHReader.cpp index 655d59fa8b2..2a22132ea84 100644 --- a/clang/lib/Frontend/PCHReader.cpp +++ b/clang/lib/Frontend/PCHReader.cpp @@ -436,7 +436,9 @@ public: continue; } - Prev->Next = new ObjCMethodList(Method, 0); + ObjCMethodList *Mem = + Reader.getSema()->BumpAlloc.Allocate<ObjCMethodList>(); + Prev->Next = new (Mem) ObjCMethodList(Method, 0); Prev = Prev->Next; } @@ -452,7 +454,9 @@ public: continue; } - Prev->Next = new ObjCMethodList(Method, 0); + ObjCMethodList *Mem = + Reader.getSema()->BumpAlloc.Allocate<ObjCMethodList>(); + Prev->Next = new (Mem) ObjCMethodList(Method, 0); Prev = Prev->Next; } diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index 13eeb6c761a..af51fb10c16 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -1490,7 +1490,8 @@ void Sema::AddInstanceMethodToGlobalPool(ObjCMethodDecl *Method) { // We have a new signature for an existing method - add it. // This is extremely rare. Only 1% of Cocoa selectors are "overloaded". - Entry.Next = new ObjCMethodList(Method, Entry.Next); + ObjCMethodList *Mem = BumpAlloc.Allocate<ObjCMethodList>(); + Entry.Next = new (Mem) ObjCMethodList(Method, Entry.Next); } // FIXME: Finish implementing -Wno-strict-selector-match. @@ -1553,7 +1554,8 @@ void Sema::AddFactoryMethodToGlobalPool(ObjCMethodDecl *Method) { if (!match) { // We have a new signature for an existing method - add it. // This is extremely rare. Only 1% of Cocoa selectors are "overloaded". - struct ObjCMethodList *OMI = new ObjCMethodList(Method, FirstMethod.Next); + ObjCMethodList *Mem = BumpAlloc.Allocate<ObjCMethodList>(); + ObjCMethodList *OMI = new (Mem) ObjCMethodList(Method, FirstMethod.Next); FirstMethod.Next = OMI; } } |