diff --git a/wai.c b/wai.c index 7db4806..147d626 100644 --- a/wai.c +++ b/wai.c @@ -54,7 +54,7 @@ struct stack { struct module { struct type_t *types; - char *funcs[128]; + u_char *funcs[128]; struct table_t *tables; struct mem_t *mems; struct global_t *globals; @@ -63,7 +63,7 @@ struct module { struct start_t *start; struct import_t *imports; struct export_t *exports; - char *binary; + u_char *binary; struct stack stack; int scope; }; @@ -111,7 +111,7 @@ double stack_top(struct stack *s) { return s->items[s->count-1]; } -int parse_type(char *binary, int len) { +int parse_type(u_char *binary, int len) { int i = 0; enum TYPE param = binary[i]; printf("type %x\n", param); @@ -131,11 +131,11 @@ int parse_type(char *binary, int len) { return i; } -int parse_function(struct module *module, char *binary, double param, int len); -int parse_instruction(struct module *module, char *binary, double param, int len) { +int parse_function(struct module *module, u_char *binary, double param, int len); +int parse_instruction(struct module *module, u_char *binary, double param, int len) { int i = 0; enum INSTRUCTION instr = (u_char) binary[i]; - char *instr_addr = &binary[i]; + u_char *instr_addr = &binary[i]; incr(i, len); switch (instr) { @@ -205,7 +205,7 @@ int parse_instruction(struct module *module, char *binary, double param, int len return i; } -int parse_function(struct module *module, char *binary, double param, int len) { +int parse_function(struct module *module, u_char *binary, double param, int len) { int i = 0; int body_size = binary[i]; incr(i, len); @@ -219,7 +219,7 @@ int parse_function(struct module *module, char *binary, double param, int len) { return i; } -int parse_section(struct module *module, char *binary, int len) { +int parse_section(struct module *module, u_char *binary, int len) { int i = 0; enum section type = binary[i]; incr(i, len); @@ -314,9 +314,9 @@ int parse_section(struct module *module, char *binary, int len) { return i; } -int parse_module(char *binary, size_t len) { +int parse_module(u_char *binary, size_t len) { int i = 0; - char *magic = "\0asm"; + u_char *magic = "\0asm"; while (i < 4) { if (binary[i] != magic[i]) { fprintf(stderr, "no wasm magic\n"); @@ -355,7 +355,7 @@ int main(int argc, char **argv) { stat(argv[1], &st); printf("size: %ld\n", st.st_size); - char *binary = malloc(st.st_size); + unsigned char *binary = malloc(st.st_size); fread(binary, st.st_size, st.st_size, file); if (parse_module(binary, st.st_size) == -1) {