-
-
Notifications
You must be signed in to change notification settings - Fork 71
Open
Description
My code:
It looks like when zig-yaml gets to here:
Lines 178 to 181 in 1a0cc53
| var value: ?Value = map.get(field.name) orelse blk: { | |
| const field_name = try mem.replaceOwned(u8, arena, field.name, "_", "-"); | |
| break :blk map.get(field_name); | |
| }; |
field_name is not deallocated after it is no longer used.
Similar problem here:
Line 104 in 1a0cc53
| return self.parsePointer(arena, T, .{ .scalar = try arena.dupe(u8, scalar) }); |
error(gpa): memory address 0xffff8a54000c leaked:
/nix/store/7kp0fldzamj5ld6jwxn6sv895ngifpsk-zig-0.14.1/lib/zig/std/mem/Allocator.zig:423:40: 0x108af8f in dupe__anon_8336 (pipelet-workflow-runner)
const new_buf = try allocator.alloc(T, m.len);
^
/home/ross/.cache/zig/p/zig_yaml-0.1.0-C1161miEAgBCwL3YAEQZwV_4GyaaT2Xqj9nKB6hNe_TL/src/Yaml.zig:108:75: 0x11191c3 in parseValue__anon_29325 (pipelet-workflow-runner)
return self.parsePointer(arena, T, .{ .string = try arena.dupe(u8, string) });
^
/home/ross/.cache/zig/p/zig_yaml-0.1.0-C1161miEAgBCwL3YAEQZwV_4GyaaT2Xqj9nKB6hNe_TL/src/Yaml.zig:164:57: 0x110f1fb in parseStruct__anon_28541 (pipelet-workflow-runner)
@field(parsed, field.name) = try self.parseValue(arena, field.type, unwrapped);
^
/home/ross/.cache/zig/p/zig_yaml-0.1.0-C1161miEAgBCwL3YAEQZwV_4GyaaT2Xqj9nKB6hNe_TL/src/Yaml.zig:101:39: 0x1105e3f in parseValue__anon_25007 (pipelet-workflow-runner)
.@"struct" => self.parseStruct(arena, T, try value.asMap()),
^
/home/ross/.cache/zig/p/zig_yaml-0.1.0-C1161miEAgBCwL3YAEQZwV_4GyaaT2Xqj9nKB6hNe_TL/src/Yaml.zig:64:31: 0x10fcc47 in parse__anon_24132 (pipelet-workflow-runner)
return self.parseValue(arena, T, self.docs.items[0]);
^
/home/ross/Pipelet/workflow-runner/src/main.zig:86:28: 0x10fbc3f in main (pipelet-workflow-runner)
var wf = try yaml.parse(gpa, Workflow);
^
error(gpa): memory address 0xffff8a5c0000 leaked:
/nix/store/7kp0fldzamj5ld6jwxn6sv895ngifpsk-zig-0.14.1/lib/zig/std/mem.zig:3903:39: 0x1118f3b in replaceOwned__anon_29301 (pipelet-workflow-runner)
const output = try allocator.alloc(T, replacementSize(T, input, needle, replacement));
^
/home/ross/.cache/zig/p/zig_yaml-0.1.0-C1161miEAgBCwL3YAEQZwV_4GyaaT2Xqj9nKB6hNe_TL/src/Yaml.zig:151:52: 0x110f35f in parseStruct__anon_28541 (pipelet-workflow-runner)
const field_name = try mem.replaceOwned(u8, arena, field.name, "_", "-");
^
/home/ross/.cache/zig/p/zig_yaml-0.1.0-C1161miEAgBCwL3YAEQZwV_4GyaaT2Xqj9nKB6hNe_TL/src/Yaml.zig:101:39: 0x1105e3f in parseValue__anon_25007 (pipelet-workflow-runner)
.@"struct" => self.parseStruct(arena, T, try value.asMap()),
^
/home/ross/.cache/zig/p/zig_yaml-0.1.0-C1161miEAgBCwL3YAEQZwV_4GyaaT2Xqj9nKB6hNe_TL/src/Yaml.zig:64:31: 0x10fcc47 in parse__anon_24132 (pipelet-workflow-runner)
return self.parseValue(arena, T, self.docs.items[0]);
^
/home/ross/Pipelet/workflow-runner/src/main.zig:86:28: 0x10fbc3f in main (pipelet-workflow-runner)
var wf = try yaml.parse(gpa, Workflow);
^
/nix/store/7kp0fldzamj5ld6jwxn6sv895ngifpsk-zig-0.14.1/lib/zig/std/start.zig:660:37: 0x10f6cfb in posixCallMainAndExit (pipelet-workflow-runner)
const result = root.main() catch |err| {
^
Metadata
Metadata
Assignees
Labels
No labels