From b0fb5f64914ea219b35b778c371fa4d8237b8526 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Mon, 25 Aug 2025 02:04:40 -0700 Subject: [PATCH] fix another memory leak --- yaml.zig | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/yaml.zig b/yaml.zig index 2c5b339651db544b584a2b6402987898d92b690d..a77c1c398dbfe1975b02294d6baa293e3902e4db 100644 --- a/yaml.zig +++ b/yaml.zig @@ -326,6 +326,7 @@ fn parse_document(p: *Parser) Error!Document { fn parse_mapping(p: *Parser) Error!Mapping { var res = std.ArrayList(Key).init(p.alloc); errdefer res.deinit(); + errdefer for (res.items) |k| k.deinit(p.alloc); while (true) { const tok = try p.next(); @@ -335,10 +336,12 @@ fn parse_mapping(p: *Parser) Error!Mapping { if (tok.type != c.YAML_SCALAR_EVENT) { return error.YamlUnexpectedToken; } - try res.append(Key{ - .key = try get_event_string(tok, p), - .value = try parse_value(p), - }); + + const key = try get_event_string(tok, p); + errdefer p.alloc.free(key); + const value = try parse_value(p); + errdefer value.deinit(p.alloc); + try res.append(Key{ .key = key, .value = value }); } } -- 2.54.0