# HG changeset patch # User lost@l-w.ca # Date 1301976616 21600 # Node ID 534bfa3389b035df26696d8f238d7567ea343d1c # Parent c42d6dc7df68bf710a8d278d27ea91941b797ea6 Fixed multiple symbol error with nested structs diff -r c42d6dc7df68 -r 534bfa3389b0 lwasm/struct.c --- a/lwasm/struct.c Mon Apr 04 18:17:31 2011 -0600 +++ b/lwasm/struct.c Mon Apr 04 22:10:16 2011 -0600 @@ -210,31 +210,34 @@ if (as -> instruct) { - len = strlen(as -> cstruct -> name) + strlen(l -> sym) + 9; - t = lw_alloc(len + 1); - sprintf(t, "sizeof{%s.%s}", as -> cstruct -> name, l -> sym); +// len = strlen(as -> cstruct -> name) + strlen(l -> sym) + 9; +// t = lw_alloc(len + 1); +// sprintf(t, "sizeof{%s.%s}", as -> cstruct -> name, l -> sym); } else { len = strlen(l -> sym) + 8; t = lw_alloc(len + 1); sprintf(t, "sizeof{%s}", l -> sym); + te = lw_expr_build(lw_expr_type_int, s -> size); + register_symbol(as, l, t, te, symbol_flag_nocheck); + lw_expr_destroy(te); + lw_free(t); } - te = lw_expr_build(lw_expr_type_int, s -> size); - register_symbol(as, l, t, te, symbol_flag_nocheck); - lw_expr_destroy(te); - lw_free(t); if (as -> instruct) { - len = strlen(as -> cstruct -> name) + strlen(l -> sym) + 1; - t = lw_alloc(len + 1); - sprintf(t, "%s.%s", as -> cstruct -> name, l -> sym); +// len = strlen(as -> cstruct -> name) + strlen(l -> sym) + 1; +// t = lw_alloc(len + 1); +// sprintf(t, "%s.%s", as -> cstruct -> name, l -> sym); } else + { t = lw_strdup(l -> sym); - pseudo_endstruct_aux(as, l, s -> fields, t, &addr); - lw_free(t); + pseudo_endstruct_aux(as, l, s -> fields, t, &addr); + lw_free(t); + } + l -> symset = 1; if (as -> instruct) register_struct_entry(as, l, s -> size, s);