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/FoldData.zig | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/FoldData.zig') diff --git a/src/FoldData.zig b/src/FoldData.zig index e387447..a06eefe 100644 --- a/src/FoldData.zig +++ b/src/FoldData.zig @@ -24,6 +24,13 @@ pub fn init(allocator: mem.Allocator) !Self { .cwcf = try allocator.alloc(bool, 0x110000), }; + var slices: usize = 0; + errdefer { + for (self.fold[0..slices]) |slice| self.allocator.free(slice); + self.allocator.free(self.fold); + self.allocator.free(self.cwcf); + } + @memset(self.fold, &.{}); @memset(self.cwcf, false); @@ -32,6 +39,7 @@ pub fn init(allocator: mem.Allocator) !Self { if (len == 0) break; const cp = try reader.readInt(u24, endian); self.fold[cp >> 1] = try allocator.alloc(u21, len - 1); + slices += 1; for (0..len - 1) |i| { self.fold[cp >> 1][i] = @intCast(try reader.readInt(u24, endian)); } -- cgit v1.2.3