diff --git a/src/wasm/rust/harfbuzz-wasm/src/lib.rs b/src/wasm/rust/harfbuzz-wasm/src/lib.rs index 3fe1fa545..3be27f614 100644 --- a/src/wasm/rust/harfbuzz-wasm/src/lib.rs +++ b/src/wasm/rust/harfbuzz-wasm/src/lib.rs @@ -41,7 +41,7 @@ extern "C" { fn font_glyph_to_string(font: u32, glyph: u32, str: *const u8, len: u32); fn font_get_glyph_h_advance(font: u32, glyph: u32) -> i32; fn font_get_glyph_v_advance(font: u32, glyph: u32) -> i32; - fn face_copy_table(font: u32, tag: u32) -> Blob; + fn face_copy_table(font: u32, tag: u32, blob: *mut Blob) -> bool; fn buffer_copy_contents(buffer: u32, cbuffer: *mut CBufferContents) -> bool; fn buffer_set_contents(buffer: u32, cbuffer: &CBufferContents) -> bool; fn debugprint(s: *const u8); @@ -165,7 +165,14 @@ impl Face { tag_u |= (chars.next().unwrap() as u32) << 16; tag_u |= (chars.next().unwrap() as u32) << 8; tag_u |= chars.next().unwrap() as u32; - unsafe { face_copy_table(self.0, tag_u) } + let mut blob = Blob { + data: std::ptr::null_mut(), + length: 0, + }; + unsafe { + face_copy_table(self.0, tag_u, &mut blob); + } + blob } /// Get the face's design units per em.