diff options
| author | Isaac Freund <ifreund@ifreund.xyz> | 2020-06-26 12:58:11 +0200 |
|---|---|---|
| committer | Isaac Freund <ifreund@ifreund.xyz> | 2020-06-26 12:58:11 +0200 |
| commit | 558918d286afd215c9b0a161d9de1282400c20de (patch) | |
| tree | 4aac1eb2cac8482505f144308e68b0c71208f363 | |
| parent | dfb03fd0cb28059211432513fd6a94679feb9d6b (diff) | |
| download | river-558918d286afd215c9b0a161d9de1282400c20de.tar.gz river-558918d286afd215c9b0a161d9de1282400c20de.tar.xz | |
config: fix leak of hashmap keys
| -rw-r--r-- | river/Config.zig | 8 | ||||
| -rw-r--r-- | river/Output.zig | 2 |
2 files changed, 8 insertions, 2 deletions
diff --git a/river/Config.zig b/river/Config.zig index ea45f38..8028009 100644 --- a/river/Config.zig +++ b/river/Config.zig @@ -62,7 +62,9 @@ pub fn init(self: *Self) !void { self.mode_to_id = std.StringHashMap(usize).init(util.gpa); errdefer self.mode_to_id.deinit(); - try self.mode_to_id.putNoClobber("normal", 0); + const owned_slice = try std.mem.dupe(util.gpa, u8, "normal"); + errdefer util.gpa.free(owned_slice); + try self.mode_to_id.putNoClobber(owned_slice, 0); self.modes = std.ArrayList(std.ArrayList(Mapping)).init(util.gpa); errdefer self.modes.deinit(); @@ -76,11 +78,15 @@ pub fn init(self: *Self) !void { } pub fn deinit(self: Self) void { + var it = self.mode_to_id.iterator(); + while (it.next()) |kv| util.gpa.free(kv.key); self.mode_to_id.deinit(); + for (self.modes.items) |mode| { for (mode.items) |mapping| mapping.deinit(util.gpa); mode.deinit(); } self.modes.deinit(); + self.float_filter.deinit(); } diff --git a/river/Output.zig b/river/Output.zig index 2f0398e..36eb343 100644 --- a/river/Output.zig +++ b/river/Output.zig @@ -105,7 +105,7 @@ pub fn init(self: *Self, root: *Root, wlr_output: *c.wlr_output) !void { self.master_factor = 0.6; - self.layout = try std.fmt.allocPrint(util.gpa, "full", .{}); + self.layout = try std.mem.dupe(util.gpa, u8, "full"); self.status_trackers = std.SinglyLinkedList(OutputStatus).init(); |
