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

This commit is contained in:
Chris Clark 2025-03-24 14:14:01 -05:00 committed by Alex Rønne Petersen
parent 598413357d
commit cb3eec285f
No known key found for this signature in database

View File

@ -100,14 +100,19 @@ pub fn parse(gpa: Allocator, source: [:0]const u8, mode: Mode) Allocator.Error!A
.zon => try parser.parseZon(),
}
const extra_data = try parser.extra_data.toOwnedSlice(gpa);
errdefer gpa.free(extra_data);
const errors = try parser.errors.toOwnedSlice(gpa);
errdefer gpa.free(errors);
// TODO experiment with compacting the MultiArrayList slices here
return Ast{
.source = source,
.mode = mode,
.tokens = tokens.toOwnedSlice(),
.nodes = parser.nodes.toOwnedSlice(),
.extra_data = try parser.extra_data.toOwnedSlice(gpa),
.errors = try parser.errors.toOwnedSlice(gpa),
.extra_data = extra_data,
.errors = errors,
};
}