Skip to content

Commit 6e6679e

Browse files
author
Alex B
committed
[lld-macho] Fix using freed memory - issue detected by ASAN build�
1 parent e74e1ea commit 6e6679e

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

lld/MachO/ObjC.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -496,10 +496,12 @@ class ObjcCategoryMerger {
496496
// Need this to be 'static' so the data survives past the ObjcCategoryMerger
497497
// object, as the data will be read by the Writer when the final binary is
498498
// generated.
499-
static SmallVector<SmallVector<uint8_t>> generatedSectionData;
499+
static SmallVector<std::unique_ptr<SmallVector<uint8_t>>>
500+
generatedSectionData;
500501
};
501502

502-
SmallVector<SmallVector<uint8_t>> ObjcCategoryMerger::generatedSectionData;
503+
SmallVector<std::unique_ptr<SmallVector<uint8_t>>>
504+
ObjcCategoryMerger::generatedSectionData;
503505

504506
ObjcCategoryMerger::ObjcCategoryMerger(
505507
std::vector<ConcatInputSection *> &_allInputSections)
@@ -1220,8 +1222,9 @@ StringRef ObjcCategoryMerger::newStringData(const char *str) {
12201222
}
12211223

12221224
SmallVector<uint8_t> &ObjcCategoryMerger::newSectionData(uint32_t size) {
1223-
generatedSectionData.push_back(SmallVector<uint8_t>(size, 0));
1224-
return generatedSectionData.back();
1225+
generatedSectionData.push_back(
1226+
std::make_unique<SmallVector<uint8_t>>(size, 0));
1227+
return *generatedSectionData.back();
12251228
}
12261229

12271230
} // namespace

0 commit comments

Comments
 (0)