cache path and line number
This commit is contained in:
parent
9096531e23
commit
6d62936c7b
@ -571,16 +571,22 @@ namespace libdwarf {
|
|||||||
// If the vector has been empty this can happen
|
// If the vector has been empty this can happen
|
||||||
if(table_it != line_entries.end()) {
|
if(table_it != line_entries.end()) {
|
||||||
Dwarf_Line line = table_it->line;
|
Dwarf_Line line = table_it->line;
|
||||||
Dwarf_Unsigned line_number = 0;
|
if(!table_it->line_number) {
|
||||||
VERIFY(wrap(dwarf_lineno, line, &line_number) == DW_DLV_OK);
|
Dwarf_Unsigned line_number = 0;
|
||||||
frame.line = static_cast<std::uint_least32_t>(line_number);
|
VERIFY(wrap(dwarf_lineno, line, &line_number) == DW_DLV_OK);
|
||||||
char* filename = nullptr;
|
table_it->line_number = static_cast<std::uint_least32_t>(line_number);
|
||||||
VERIFY(wrap(dwarf_linesrc, line, &filename) == DW_DLV_OK);
|
}
|
||||||
auto wrapper = raii_wrap(
|
frame.line = table_it->line_number.unwrap();
|
||||||
filename,
|
if(!table_it->path) {
|
||||||
[this] (char* str) { if(str) dwarf_dealloc(dbg, str, DW_DLA_STRING); }
|
char* filename = nullptr;
|
||||||
);
|
VERIFY(wrap(dwarf_linesrc, line, &filename) == DW_DLV_OK);
|
||||||
frame.filename = filename;
|
auto wrapper = raii_wrap(
|
||||||
|
filename,
|
||||||
|
[this] (char* str) { if(str) dwarf_dealloc(dbg, str, DW_DLA_STRING); }
|
||||||
|
);
|
||||||
|
table_it->path = filename;
|
||||||
|
}
|
||||||
|
frame.filename = table_it->path.unwrap();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Dwarf_Line_Context line_context = table_info.line_context;
|
Dwarf_Line_Context line_context = table_info.line_context;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user