==> src/module.c <==1/* Freeing a decoded module, and finding exports. */
2#include "wasm/module.h"
3
4#include <stdlib.h>
5#include <string.h>
6
7void wasm_module_free(wasm_module *m) {
8 if (!m) return;
9 free(m->types);
10 free(m->imports);
11 free(m->funcs);
12 free(m->tables);
13 free(m->mems);
14 free(m->globals);
15 free(m->global_inits);
16 free(m->exports);
17 if (m->elems)
18 for (uint32_t i = 0; i < m->nelems; i++) {
19 free(m->elems[i].funcs);
20 free(m->elems[i].exprs);
21 }
22 free(m->elems);
23 if (m->codes)
24 for (uint32_t i = 0; i < m->ncodes; i++) free(m->codes[i].locals);
25 free(m->codes);
26 free(m->datas);
27 memset(m, 0, sizeof *m);
28}
29
30const wasm_export *wasm_module_export(const wasm_module *m, const char *name, uint8_t kind) {
31 size_t n = strlen(name);
32 for (uint32_t i = 0; i < m->nexports; i++) {
33 const wasm_export *e = &m->exports[i];
34 if (e->kind == kind && e->name_len == n && memcmp(e->name, name, n) == 0) return e;
35 }
36 return NULL;
37}