From 83f051fb58dbb8b19bb24fa6af211b721ec8f33e Mon Sep 17 00:00:00 2001 From: alichraghi Date: Mon, 18 Jul 2022 22:34:57 +0430 Subject: [PATCH] freetype/harfbuzz: fix invalid `getGlyphInfos` return Co-authored-by: ab55al --- freetype/src/harfbuzz/buffer.zig | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/freetype/src/harfbuzz/buffer.zig b/freetype/src/harfbuzz/buffer.zig index 4a58ea0d..55b7a5d1 100644 --- a/freetype/src/harfbuzz/buffer.zig +++ b/freetype/src/harfbuzz/buffer.zig @@ -26,7 +26,10 @@ pub const SerializeFormat = enum(u31) { pub const GlyphInfo = extern struct { codepoint: u32, + mask: u32, cluster: u32, + var1: u32, + var2: u32, pub fn getFlags(self: GlyphInfo) GlyphFlags { return GlyphFlags.from(@intCast(u2, hb_glyph_info_get_glyph_flags(&self))); @@ -328,12 +331,14 @@ pub const Buffer = struct { } pub fn getGlyphInfos(self: Buffer) []GlyphInfo { - return hb_buffer_get_glyph_infos(self.handle, null)[0..self.getLength()]; + var length: u32 = 0; + return hb_buffer_get_glyph_infos(self.handle, &length)[0..length]; } pub fn getGlyphPositions(self: Buffer) ?[]Position { - return if (hb_buffer_get_glyph_positions(self.handle, null)) |positions| - @ptrCast([*]Position, positions)[0..self.getLength()] + var length: u32 = 0; + return if (hb_buffer_get_glyph_positions(self.handle, &length)) |positions| + @ptrCast([*]Position, positions)[0..length] else null; }