authorgravatar for mail@isaacfreund.comIsaac Freund <mail@isaacfreund.com> 2025-02-06 10:44:01+01:00
committergravatar for mail@isaacfreund.comIsaac Freund <mail@isaacfreund.com> 2025-02-07 07:20:13+01:00
logb3c63e5de0c0441b9facc71b4c7e0a3d1811368d
tree47843e1737ff8f41892254351db1a5415921db2a
parentbf7bc4ff0164f54d7323f1ba5d41ebf57a77149d

Dwarf: fix cross_section_relocs capacity

This ensure capacity call does not match the number of appendAssumeCapacity() calls that follow it. Fix this. This was discovered due to hitting the assertion failure in appendAssumeCapacity() while building river. I'm not sure how to isolate a minimal reproducer for a test.

1 files changed, 1 insertions(+), 1 deletions(-)

src/link/Dwarf.zig+1-1
...@@ -4576,7 +4576,7 @@ pub fn flushModule(dwarf: *Dwarf, pt: Zcu.PerThread) FlushError!void {...@@ -4576,7 +4576,7 @@ pub fn flushModule(dwarf: *Dwarf, pt: Zcu.PerThread) FlushError!void {
4576 );4576 );
4577 for (dwarf.mods.values(), dwarf.debug_line.section.units.items) |mod_info, *unit| {4577 for (dwarf.mods.values(), dwarf.debug_line.section.units.items) |mod_info, *unit| {
4578 unit.clear();4578 unit.clear();
4579 try unit.cross_section_relocs.ensureTotalCapacity(dwarf.gpa, 2 * (1 + mod_info.files.count()));4579 try unit.cross_section_relocs.ensureTotalCapacity(dwarf.gpa, mod_info.dirs.count() + 2 * (mod_info.files.count()));
4580 header.clearRetainingCapacity();4580 header.clearRetainingCapacity();
4581 try header.ensureTotalCapacity(unit.header_len);4581 try header.ensureTotalCapacity(unit.header_len);
4582 const unit_len = (if (unit.next.unwrap()) |next_unit|4582 const unit_len = (if (unit.next.unwrap()) |next_unit|