diff options
Diffstat (limited to 'src/WidthData.zig')
| -rw-r--r-- | src/WidthData.zig | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/WidthData.zig b/src/WidthData.zig index d17f0cd..b9ef84e 100644 --- a/src/WidthData.zig +++ b/src/WidthData.zig | |||
| @@ -27,13 +27,16 @@ pub fn init(allocator: mem.Allocator) !Self { | |||
| 27 | .allocator = allocator, | 27 | .allocator = allocator, |
| 28 | .g_data = try GraphemeData.init(allocator), | 28 | .g_data = try GraphemeData.init(allocator), |
| 29 | }; | 29 | }; |
| 30 | errdefer self.g_data.deinit(); | ||
| 30 | 31 | ||
| 31 | const stage_1_len: u16 = try reader.readInt(u16, endian); | 32 | const stage_1_len: u16 = try reader.readInt(u16, endian); |
| 32 | self.s1 = try allocator.alloc(u16, stage_1_len); | 33 | self.s1 = try allocator.alloc(u16, stage_1_len); |
| 34 | errdefer allocator.free(self.s1); | ||
| 33 | for (0..stage_1_len) |i| self.s1[i] = try reader.readInt(u16, endian); | 35 | for (0..stage_1_len) |i| self.s1[i] = try reader.readInt(u16, endian); |
| 34 | 36 | ||
| 35 | const stage_2_len: u16 = try reader.readInt(u16, endian); | 37 | const stage_2_len: u16 = try reader.readInt(u16, endian); |
| 36 | self.s2 = try allocator.alloc(i3, stage_2_len); | 38 | self.s2 = try allocator.alloc(i3, stage_2_len); |
| 39 | errdefer allocator.free(self.s2); | ||
| 37 | for (0..stage_2_len) |i| self.s2[i] = @intCast(try reader.readInt(i8, endian)); | 40 | for (0..stage_2_len) |i| self.s2[i] = @intCast(try reader.readInt(i8, endian)); |
| 38 | 41 | ||
| 39 | return self; | 42 | return self; |