From 74be85ac145cc6de5d03348e07be8d982c2211cb Mon Sep 17 00:00:00 2001 From: Jose Colon Rodriguez Date: Thu, 28 Mar 2024 10:06:00 -0400 Subject: PropsData and errdefers for init fns --- src/NormData.zig | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'src/NormData.zig') diff --git a/src/NormData.zig b/src/NormData.zig index 413619a..7ffe679 100644 --- a/src/NormData.zig +++ b/src/NormData.zig @@ -8,25 +8,30 @@ const FoldData = @import("FoldData"); const HangulData = @import("HangulData"); const NormPropsData = @import("NormPropsData"); -canon_data: CanonData, -ccc_data: CccData, -compat_data: CompatData, -hangul_data: HangulData, -normp_data: NormPropsData, +canon_data: CanonData = undefined, +ccc_data: CccData = undefined, +compat_data: CompatData = undefined, +hangul_data: HangulData = undefined, +normp_data: NormPropsData = undefined, const Self = @This(); pub fn init(allocator: std.mem.Allocator) !Self { - return Self{ - .canon_data = try CanonData.init(allocator), - .ccc_data = try CccData.init(allocator), - .compat_data = try CompatData.init(allocator), - .hangul_data = try HangulData.init(allocator), - .normp_data = try NormPropsData.init(allocator), - }; + var self = Self{}; + self.canon_data = try CanonData.init(allocator); + errdefer self.canon_data.deinit(); + self.ccc_data = try CccData.init(allocator); + errdefer self.ccc_data.deinit(); + self.compat_data = try CompatData.init(allocator); + errdefer self.compat_data.deinit(); + self.hangul_data = try HangulData.init(allocator); + errdefer self.hangul_data.deinit(); + self.normp_data = try NormPropsData.init(allocator); + + return self; } -pub fn deinit(self: *const Self) void { +pub fn deinit(self: *Self) void { self.canon_data.deinit(); self.ccc_data.deinit(); self.compat_data.deinit(); -- cgit v1.2.3