diff --git a/src/main.zig b/src/main.zig index 0e06d1f..af2c11a 100644 --- a/src/main.zig +++ b/src/main.zig @@ -217,7 +217,18 @@ pub fn main() !void { CustomCommands.mapping = .init(state.allocator); var config_parser = try IniParser(Config).init(state.allocator, config_path, migrator.configFieldHandler); defer config_parser.deinit(); - defer CustomCommands.mapping.deinit(); + // mapping.deinit() has to be done here + defer { + if (!shutdown or !restart) { + var iter = CustomCommands.mapping.iterator(); + while (iter.next()) |i| { + temporary_allocator.free(i.key_ptr.*); + temporary_allocator.free(i.value_ptr.*.cmd); + temporary_allocator.free(i.value_ptr.*.name); + } + CustomCommands.mapping.deinit(); + } + } state.config = config_parser.structure;