authorgravatar for 78776922+coffeebe4code@users.noreply.github.comChris Clark <78776922+coffeebe4code@users.noreply.github.com> 2025-03-24 14:14:01-05:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-03-25 15:40:55+01:00
logcb3eec285ff254cf36a1e48af06e764f8a9b23bd
tree77a40381dafe0acd1fe4b4f94bb70a8d2b889bad
parent598413357ddd06750e0830db13fbba10f72fe9c0
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.zig.Ast: Fix error case memory leak in parse()


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

lib/std/zig/Ast.zig+7-2
......@@ -100,14 +100,19 @@ pub fn parse(gpa: Allocator, source: [:0]const u8, mode: Mode) Allocator.Error!A
100100 .zon => try parser.parseZon(),
101101 }
102102
103 const extra_data = try parser.extra_data.toOwnedSlice(gpa);
104 errdefer gpa.free(extra_data);
105 const errors = try parser.errors.toOwnedSlice(gpa);
106 errdefer gpa.free(errors);
107
103108 // TODO experiment with compacting the MultiArrayList slices here
104109 return Ast{
105110 .source = source,
106111 .mode = mode,
107112 .tokens = tokens.toOwnedSlice(),
108113 .nodes = parser.nodes.toOwnedSlice(),
109 .extra_data = try parser.extra_data.toOwnedSlice(gpa),
110 .errors = try parser.errors.toOwnedSlice(gpa),
114 .extra_data = extra_data,
115 .errors = errors,
111116 };
112117}
113118