motiejus/zig

fork of https://codeberg.org/ziglang/zig
git clone https://git.jakstys.lt/motiejus/zig.git
Log | Tree | Refs | README | LICENSE

commit 525466b49d4acc0d33f528bc9d53392c309a43bd (tree)
parent 89db4f2e9390a75b73be3d20a95df78e376cfdd5
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:
Mlib/std/zig/Ast.zig | 9+++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/std/zig/Ast.zig b/lib/std/zig/Ast.zig @@ -181,14 +181,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, }; }