refactor: improve create pattern to avoid leaks
This commit is contained in:
		
							parent
							
								
									de68c1a5d4
								
							
						
					
					
						commit
						efdad96054
					
				
					 46 changed files with 90 additions and 30 deletions
				
			
		| 
						 | 
				
			
			@ -20,7 +20,8 @@ pub fn Create(comptime layout_: Widget.Layout) @import("widget.zig").CreateFunct
 | 
			
		|||
                    break :blk Widget.Layout{ .static = size };
 | 
			
		||||
                } else break :blk layout_;
 | 
			
		||||
            } else layout_;
 | 
			
		||||
            const self: *Self = try allocator.create(Self);
 | 
			
		||||
            const self = try allocator.create(Self);
 | 
			
		||||
            errdefer allocator.destroy(self);
 | 
			
		||||
            self.* = .{
 | 
			
		||||
                .plane = try Plane.init(&(Widget.Box{}).opts(@typeName(Self)), parent),
 | 
			
		||||
                .layout_ = layout__,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,8 @@ pub fn create(allocator: std.mem.Allocator, parent: Plane, event_handler: ?Event
 | 
			
		|||
        return error.WidgetInitFailed;
 | 
			
		||||
    };
 | 
			
		||||
    defer env.deinit();
 | 
			
		||||
    const self: *Self = try allocator.create(Self);
 | 
			
		||||
    const self = try allocator.create(Self);
 | 
			
		||||
    errdefer allocator.destroy(self);
 | 
			
		||||
    self.* = .{
 | 
			
		||||
        .allocator = allocator,
 | 
			
		||||
        .plane = try Plane.init(&(Widget.Box{}).opts(@typeName(Self)), parent),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,8 @@ plane: Plane,
 | 
			
		|||
const Self = @This();
 | 
			
		||||
 | 
			
		||||
pub fn create(allocator: std.mem.Allocator, parent: Plane, _: ?EventHandler, _: ?[]const u8) @import("widget.zig").CreateError!Widget {
 | 
			
		||||
    const self: *Self = try allocator.create(Self);
 | 
			
		||||
    const self = try allocator.create(Self);
 | 
			
		||||
    errdefer allocator.destroy(self);
 | 
			
		||||
    self.* = .{
 | 
			
		||||
        .allocator = allocator,
 | 
			
		||||
        .plane = try Plane.init(&(Widget.Box{}).opts(@typeName(Self)), parent),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,8 @@ pub const width = idle_msg.len + 20;
 | 
			
		|||
 | 
			
		||||
pub fn create(allocator: Allocator, parent: Plane, _: ?EventHandler, _: ?[]const u8) @import("widget.zig").CreateError!Widget {
 | 
			
		||||
    const frame_rate = tp.env.get().num("frame-rate");
 | 
			
		||||
    const self: *Self = try allocator.create(Self);
 | 
			
		||||
    const self = try allocator.create(Self);
 | 
			
		||||
    errdefer allocator.destroy(self);
 | 
			
		||||
    self.* = .{
 | 
			
		||||
        .plane = try Plane.init(&(Widget.Box{}).opts(@typeName(Self)), parent),
 | 
			
		||||
        .wipe_after_frames = @divTrunc(frame_rate, 2),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,8 @@ const Level = enum {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
pub fn create(allocator: std.mem.Allocator, parent: Plane, event_handler: ?EventHandler, _: ?[]const u8) @import("widget.zig").CreateError!Widget {
 | 
			
		||||
    const self: *Self = try allocator.create(Self);
 | 
			
		||||
    const self = try allocator.create(Self);
 | 
			
		||||
    errdefer allocator.destroy(self);
 | 
			
		||||
    self.* = .{
 | 
			
		||||
        .plane = try Plane.init(&(Widget.Box{}).opts(@typeName(Self)), parent),
 | 
			
		||||
        .msg = std.ArrayList(u8).init(allocator),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,8 @@ const Self = @This();
 | 
			
		|||
pub const width = 8;
 | 
			
		||||
 | 
			
		||||
pub fn create(allocator: Allocator, parent: Plane, _: ?EventHandler, _: ?[]const u8) @import("widget.zig").CreateError!Widget {
 | 
			
		||||
    const self: *Self = try allocator.create(Self);
 | 
			
		||||
    const self = try allocator.create(Self);
 | 
			
		||||
    errdefer allocator.destroy(self);
 | 
			
		||||
    self.* = .{
 | 
			
		||||
        .plane = try Plane.init(&(Widget.Box{}).opts(@typeName(Self)), parent),
 | 
			
		||||
    };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,8 @@ on_event: ?EventHandler,
 | 
			
		|||
const Self = @This();
 | 
			
		||||
 | 
			
		||||
pub fn create(allocator: Allocator, parent: Plane, event_handler: ?EventHandler, _: ?[]const u8) @import("widget.zig").CreateError!Widget {
 | 
			
		||||
    const self: *Self = try allocator.create(Self);
 | 
			
		||||
    const self = try allocator.create(Self);
 | 
			
		||||
    errdefer allocator.destroy(self);
 | 
			
		||||
    self.* = .{
 | 
			
		||||
        .plane = try Plane.init(&(Widget.Box{}).opts(@typeName(Self)), parent),
 | 
			
		||||
        .on_event = event_handler,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,6 +54,7 @@ pub const Style = @"style.config";
 | 
			
		|||
 | 
			
		||||
pub fn create(allocator: std.mem.Allocator, parent: Plane, event_handler: ?EventHandler, _: ?[]const u8) @import("widget.zig").CreateError!Widget {
 | 
			
		||||
    const self = try allocator.create(TabBar);
 | 
			
		||||
    errdefer allocator.destroy(self);
 | 
			
		||||
    self.* = try TabBar.init(allocator, parent, event_handler);
 | 
			
		||||
    return Widget.to(self);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -447,6 +448,7 @@ const spacer = struct {
 | 
			
		|||
        event_handler: ?EventHandler,
 | 
			
		||||
    ) @import("widget.zig").CreateError!Widget {
 | 
			
		||||
        const self: *Self = try allocator.create(Self);
 | 
			
		||||
        errdefer allocator.destroy(self);
 | 
			
		||||
        self.* = .{
 | 
			
		||||
            .plane = try Plane.init(&(Widget.Box{}).opts(@typeName(Self)), parent),
 | 
			
		||||
            .layout_ = .{ .static = self.plane.egc_chunk_width(content, 0, 1) },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue