diff --git a/libs/sccf/src/sccf_builder.c b/libs/sccf/src/sccf_builder.c index 25d1a32..11bcf1b 100644 --- a/libs/sccf/src/sccf_builder.c +++ b/libs/sccf/src/sccf_builder.c @@ -9,6 +9,7 @@ void sccf_builder_init(sccf_builder_t *builder) { scc_hashtable_init(&builder->str2sym, (scc_hashtable_hash_func_t)scc_strhash32, (scc_hashtable_equal_func_t)scc_strcmp); + scc_vec_init(builder->strtab); scc_vec_init(builder->relocs); scc_vec_init(builder->symtab); @@ -25,7 +26,7 @@ usize sccf_builder_add_symbol(sccf_builder_t *builder, const char *name, sccf_sym_t *sym) { usize offset = 0; offset = (usize)scc_hashtable_get(&builder->str2offset, name); - const char *key = &scc_vec_at(builder->strtab, offset); + const char *key = name; if (offset == 0) { offset = scc_vec_size(builder->strtab); while (*name) { @@ -34,7 +35,6 @@ usize sccf_builder_add_symbol(sccf_builder_t *builder, const char *name, } scc_vec_push(builder->strtab, '\0'); - key = &scc_vec_at(builder->strtab, offset); scc_hashtable_set(&builder->str2offset, key, (void *)offset); } sym->name_offset = offset;