From d167a8ba96fda70caa10f11792036dff8e039ecf Mon Sep 17 00:00:00 2001 From: zzy <2450266535@qq.com> Date: Mon, 23 Mar 2026 18:11:32 +0800 Subject: [PATCH] =?UTF-8?q?fix(sccf):=20=E4=BF=AE=E5=A4=8D=E7=AC=A6?= =?UTF-8?q?=E5=8F=B7=E6=9E=84=E5=BB=BA=E5=99=A8=E4=B8=AD=E7=9A=84=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在sccf_builder_add_symbol函数中修正了字符串键的使用方式, 直接使用传入的name参数而不是从字符串表中获取, 避免了潜在的内存访问问题并简化了代码逻辑。 --- libs/sccf/src/sccf_builder.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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;