diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig index 83222090c0a7289a61ff7c6835e4fec8a8fe1fb4..7840b8d6a7431cb50b1632a58a1eea465ba34905 100644 --- a/src/link/Dwarf.zig +++ b/src/link/Dwarf.zig @@ -91,7 +91,7 @@ pub const DeclState = struct { }; } - fn deinit(self: *DeclState, gpa: Allocator) void { + pub fn deinit(self: *DeclState, gpa: Allocator) void { self.dbg_line.deinit(); self.dbg_info.deinit(); self.abbrev_type_arena.deinit(); diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 771a57b26eb7c7211620be815925516f8a42b113..ece30c43473a1d97a9fdbc76a0368194e6634003 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -2342,6 +2342,12 @@ pub fn updateFunc(self: *Elf, module: *Module, func: *Module.Fn, air: Air, liven if (self.dwarf) |*dw| { try dw.initDeclState(decl); } + defer if (self.dwarf) |*dw| { + if (dw.decl_state) |*ds| { + ds.deinit(dw.allocator); + dw.decl_state = null; + } + }; const res = if (self.dwarf) |*dw| try codegen.generateFunction(&self.base, decl.srcLoc(), func, air, liveness, &code_buffer, .{