[wasm-api] Add buffer-contents-free

This commit is contained in:
Behdad Esfahbod 2023-02-23 15:06:18 -07:00
parent d38f02ab30
commit 851ef1380a
4 changed files with 19 additions and 2 deletions

View File

@ -33,6 +33,19 @@ namespace hb {
namespace wasm { namespace wasm {
void
buffer_contents_free (HB_WASM_EXEC_ENV
ptr_t(buffer_contents_t) contentsptr)
{
if (unlikely (!validate_app_addr (contentsptr, sizeof (buffer_contents_t))))
return;
buffer_contents_t *contents = (buffer_contents_t *) addr_app_to_native (contentsptr);
module_free (contents->info);
module_free (contents->pos);
}
void void
buffer_copy_contents (HB_WASM_EXEC_ENV_COMPOUND buffer_copy_contents (HB_WASM_EXEC_ENV_COMPOUND
ptr_t(buffer_t) bufferref) ptr_t(buffer_t) bufferref)

View File

@ -55,6 +55,7 @@ static NativeSymbol _hb_wasm_native_symbols[] =
NATIVE_SYMBOL ("(i)", blob_free), NATIVE_SYMBOL ("(i)", blob_free),
/* buffer */ /* buffer */
NATIVE_SYMBOL ("(i)", buffer_contents_free),
NATIVE_SYMBOL ("(ii)", buffer_copy_contents), NATIVE_SYMBOL ("(ii)", buffer_copy_contents),
/* face */ /* face */

View File

@ -85,7 +85,7 @@ typedef struct
} blob_t; } blob_t;
HB_WASM_API (void, blob_free) (HB_WASM_EXEC_ENV HB_WASM_API (void, blob_free) (HB_WASM_EXEC_ENV
ptr_t(blob_t) blob); ptr_t(blob_t));
/* buffer */ /* buffer */
@ -115,7 +115,8 @@ typedef struct
ptr_t(glyph_position_t) pos; ptr_t(glyph_position_t) pos;
} buffer_contents_t; } buffer_contents_t;
/* TODO buffer_contents_free */ HB_WASM_API (void, buffer_contents_free) (HB_WASM_EXEC_ENV
ptr_t(buffer_contents_t));
typedef struct buffer_t buffer_t; typedef struct buffer_t buffer_t;

View File

@ -25,5 +25,7 @@ shape (font_t *font, buffer_t *buffer)
for (unsigned i = 0; i < contents.length; i++) for (unsigned i = 0; i < contents.length; i++)
debugprint2 ("Codepoint", i, contents.info[i].codepoint); debugprint2 ("Codepoint", i, contents.info[i].codepoint);
buffer_contents_free (&contents);
return 1; return 1;
} }