Skip to content

Commit 7f26c1f

Browse files
committed
Revert "[lldb/DWARF] Fix a leak in line table construction"
This reverts commit f4db8e0. This cherry-pick was bogus, it needed some more support patches. Revert for now to unblock the automerger.
1 parent 5bafba4 commit 7f26c1f

File tree

3 files changed

+5
-34
lines changed

3 files changed

+5
-34
lines changed

lldb/include/lldb/Symbol/LineTable.h

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,6 @@ class LineTable {
4242
/// The compile unit to which this line table belongs.
4343
LineTable(CompileUnit *comp_unit);
4444

45-
/// Construct with entries found in \a sequences.
46-
///
47-
/// \param[in] sequences
48-
/// Unsorted list of line sequences.
49-
LineTable(CompileUnit *comp_unit,
50-
std::vector<std::unique_ptr<LineSequence>> &&sequences);
51-
5245
/// Destructor.
5346
~LineTable();
5447

@@ -71,7 +64,7 @@ class LineTable {
7164
bool is_epilogue_begin, bool is_terminal_entry);
7265

7366
// Used to instantiate the LineSequence helper class
74-
static std::unique_ptr<LineSequence> CreateLineSequenceContainer();
67+
LineSequence *CreateLineSequenceContainer();
7568

7669
// Append an entry to a caller-provided collection that will later be
7770
// inserted in this line table.
@@ -266,8 +259,6 @@ class LineTable {
266259
public:
267260
LessThanBinaryPredicate(LineTable *line_table);
268261
bool operator()(const LineTable::Entry &, const LineTable::Entry &) const;
269-
bool operator()(const std::unique_ptr<LineSequence> &,
270-
const std::unique_ptr<LineSequence> &) const;
271262

272263
protected:
273264
LineTable *m_line_table;

lldb/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1818,7 +1818,7 @@ bool SymbolFilePDB::ParseCompileUnitLineTable(CompileUnit &comp_unit,
18181818
prev_source_idx, false, false, false, false, true);
18191819

18201820
line_table->InsertSequence(sequence.release());
1821-
sequence = line_table->CreateLineSequenceContainer();
1821+
sequence.reset(line_table->CreateLineSequenceContainer());
18221822
}
18231823

18241824
if (ShouldAddLine(match_line, lno, length)) {
@@ -1855,7 +1855,7 @@ bool SymbolFilePDB::ParseCompileUnitLineTable(CompileUnit &comp_unit,
18551855
prev_source_idx, false, false, false, false, true);
18561856
}
18571857

1858-
line_table->InsertSequence(sequence.get());
1858+
line_table->InsertSequence(sequence.release());
18591859
}
18601860

18611861
if (line_table->GetSize()) {

lldb/source/Symbol/LineTable.cpp

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,6 @@ using namespace lldb_private;
2121
LineTable::LineTable(CompileUnit *comp_unit)
2222
: m_comp_unit(comp_unit), m_entries() {}
2323

24-
LineTable::LineTable(CompileUnit *comp_unit,
25-
std::vector<std::unique_ptr<LineSequence>> &&sequences)
26-
: m_comp_unit(comp_unit), m_entries() {
27-
LineTable::Entry::LessThanBinaryPredicate less_than_bp(this);
28-
llvm::stable_sort(sequences, less_than_bp);
29-
for (const auto &sequence : sequences) {
30-
LineSequenceImpl *seq = static_cast<LineSequenceImpl *>(sequence.get());
31-
m_entries.insert(m_entries.end(), seq->m_entries.begin(),
32-
seq->m_entries.end());
33-
}
34-
}
35-
3624
// Destructor
3725
LineTable::~LineTable() {}
3826

@@ -62,8 +50,8 @@ LineSequence::LineSequence() {}
6250

6351
void LineTable::LineSequenceImpl::Clear() { m_entries.clear(); }
6452

65-
std::unique_ptr<LineSequence> LineTable::CreateLineSequenceContainer() {
66-
return std::make_unique<LineTable::LineSequenceImpl>();
53+
LineSequence *LineTable::CreateLineSequenceContainer() {
54+
return new LineTable::LineSequenceImpl();
6755
}
6856

6957
void LineTable::AppendLineEntryToSequence(
@@ -166,14 +154,6 @@ operator()(const LineTable::Entry &a, const LineTable::Entry &b) const {
166154
#undef LT_COMPARE
167155
}
168156

169-
bool LineTable::Entry::LessThanBinaryPredicate::
170-
operator()(const std::unique_ptr<LineSequence> &sequence_a,
171-
const std::unique_ptr<LineSequence> &sequence_b) const {
172-
auto *seq_a = static_cast<const LineSequenceImpl *>(sequence_a.get());
173-
auto *seq_b = static_cast<const LineSequenceImpl *>(sequence_b.get());
174-
return (*this)(seq_a->m_entries.front(), seq_b->m_entries.front());
175-
}
176-
177157
uint32_t LineTable::GetSize() const { return m_entries.size(); }
178158

179159
bool LineTable::GetLineEntryAtIndex(uint32_t idx, LineEntry &line_entry) {

0 commit comments

Comments
 (0)