commit cb3eec285ff254cf36a1e48af06e764f8a9b23bd (tree)
parent 598413357ddd06750e0830db13fbba10f72fe9c0
Author: Chris Clark <78776922+coffeebe4code@users.noreply.github.com>
Date: Mon, 24 Mar 2025 14:14:01 -0500
std.zig.Ast: Fix error case memory leak in parse()
Diffstat:
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/lib/std/zig/Ast.zig b/lib/std/zig/Ast.zig
@@ -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,
};
}