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 {
45764576 );
45774577 for (dwarf.mods.values(), dwarf.debug_line.section.units.items) |mod_info, *unit| {
45784578 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()));
45804580 header.clearRetainingCapacity();
45814581 try header.ensureTotalCapacity(unit.header_len);
45824582 const unit_len = (if (unit.next.unwrap()) |next_unit|