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