an experimental irc client

main: use SmpAllocator in ReleaseFast

rockorager.dev 3b4e038c 51bc11c7

verified
+15 -14
+15 -14
src/main.zig
··· 31 31 std.process.exit(1); 32 32 } 33 33 34 + var debug_allocator: std.heap.DebugAllocator(.{}) = .init; 35 + 34 36 pub fn main() !void { 35 - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 36 - defer { 37 - if (builtin.mode == .Debug) { 38 - const deinit_status = gpa.deinit(); 39 - if (deinit_status == .leak) { 40 - std.log.err("memory leak", .{}); 41 - } 42 - } 43 - } 44 - const alloc = gpa.allocator(); 37 + const gpa, const is_debug = gpa: { 38 + break :gpa switch (builtin.mode) { 39 + .Debug, .ReleaseSafe => .{ debug_allocator.allocator(), true }, 40 + .ReleaseFast, .ReleaseSmall => .{ std.heap.smp_allocator, false }, 41 + }; 42 + }; 43 + defer if (is_debug) { 44 + _ = debug_allocator.deinit(); 45 + }; 45 46 46 - var args = try std.process.argsWithAllocator(alloc); 47 + var args = try std.process.argsWithAllocator(gpa); 47 48 while (args.next()) |arg| { 48 49 if (argMatch("-v", "--version", arg)) { 49 50 const stdout = std.io.getStdOut(); ··· 69 70 }, 70 71 } 71 72 72 - comlink.Command.user_commands = std.StringHashMap(i32).init(alloc); 73 + comlink.Command.user_commands = std.StringHashMap(i32).init(gpa); 73 74 defer comlink.Command.user_commands.deinit(); 74 75 75 - var app = try vaxis.vxfw.App.init(gpa.allocator()); 76 + var app = try vaxis.vxfw.App.init(gpa); 76 77 defer app.deinit(); 77 78 78 79 var comlink_app: comlink.App = undefined; 79 - try comlink_app.init(gpa.allocator(), &app.vx.unicode); 80 + try comlink_app.init(gpa, &app.vx.unicode); 80 81 defer comlink_app.deinit(); 81 82 82 83 try app.run(comlink_app.widget(), .{});