authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-08-25 02:04:40 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-08-25 02:04:40 -07:00
logb0fb5f64914ea219b35b778c371fa4d8237b8526
tree202b88a5b756b093351b8d54870536091baedc1d
parentc416992e11dc37d3f8ec7d27e605526bb6b04cd2

fix another memory leak


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

yaml.zig+7-4
...@@ -326,6 +326,7 @@ fn parse_document(p: *Parser) Error!Document {...@@ -326,6 +326,7 @@ fn parse_document(p: *Parser) Error!Document {
326fn parse_mapping(p: *Parser) Error!Mapping {326fn parse_mapping(p: *Parser) Error!Mapping {
327 var res = std.ArrayList(Key).init(p.alloc);327 var res = std.ArrayList(Key).init(p.alloc);
328 errdefer res.deinit();328 errdefer res.deinit();
329 errdefer for (res.items) |k| k.deinit(p.alloc);
329330
330 while (true) {331 while (true) {
331 const tok = try p.next();332 const tok = try p.next();
...@@ -335,10 +336,12 @@ fn parse_mapping(p: *Parser) Error!Mapping {...@@ -335,10 +336,12 @@ fn parse_mapping(p: *Parser) Error!Mapping {
335 if (tok.type != c.YAML_SCALAR_EVENT) {336 if (tok.type != c.YAML_SCALAR_EVENT) {
336 return error.YamlUnexpectedToken;337 return error.YamlUnexpectedToken;
337 }338 }
338 try res.append(Key{339
339 .key = try get_event_string(tok, p),340 const key = try get_event_string(tok, p);
340 .value = try parse_value(p),341 errdefer p.alloc.free(key);
341 });342 const value = try parse_value(p);
343 errdefer value.deinit(p.alloc);
344 try res.append(Key{ .key = key, .value = value });
342 }345 }
343}346}
344347