[mach-o] fix leak in atoms -> normalized

llvm-svn: 223530
This commit is contained in:
Nick Kledzik 2014-12-05 22:03:28 +00:00
parent b7ec8ae2ab
commit e5da30cbd3
1 changed files with 17 additions and 0 deletions

View File

@ -95,6 +95,7 @@ class Util {
public:
Util(const MachOLinkingContext &ctxt)
: _context(ctxt), _archHandler(ctxt.archHandler()), _entryAtom(nullptr) {}
~Util();
void assignAtomsToSections(const lld::File &atomFile);
void organizeSections();
@ -170,6 +171,22 @@ private:
std::vector<const Atom *> _machHeaderAliasAtoms;
};
Util::~Util() {
// The SectionInfo structs are BumpPtr allocated, but atomsAndOffsets needs
// to be deleted.
for (SectionInfo *si : _sectionInfos) {
// clear() destroys vector elements, but does not deallocate.
// Instead use swap() to deallocate vector buffer.
std::vector<AtomInfo> empty;
si->atomsAndOffsets.swap(empty);
}
// The SegmentInfo structs are BumpPtr allocated, but sections needs
// to be deleted.
for (SegmentInfo *sgi : _segmentInfos) {
std::vector<SectionInfo*> empty2;
sgi->sections.swap(empty2);
}
}
SectionInfo *Util::getRelocatableSection(DefinedAtom::ContentType type) {
StringRef segmentName;