清理了 t.CVoid

This commit is contained in:
TermiNexus committed 2026-09-16 16:06:48 +08:00
1 parent 9a191daa8d
commit cb0836de8a
43 files changed
+274 -355

No files matched your search

+9 -10
View File
@@ -792,8 +792,7 @@ def _BuildReachableSha1Set(mb: rawptr[memhub.MemBuddy], source_dir: str,
if scan_res_r is not None:
es_r: sizet = IncludesScanner.FileEntry.__sizeof__()
for e_i_r in range(scan_res_r.Count):
e_r: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(
t.CVoid(uint64(scan_res_r.Entries) + uint64(e_i_r) * es_r, t.CPtr))
e_r: IncludesScanner.FileEntry | t.CPtr = (IncludesScanner.FileEntry | t.CPtr)(uint64(scan_res_r.Entries) + uint64(e_i_r) * es_r)
if e_r is None or e_r.Path is None:
continue
# 文件级 mark:parse 完立即回收 AST(App 全量 parse 驻留会 OOM)
@@ -914,7 +913,7 @@ def _BuildReachableSha1Set(mb: rawptr[memhub.MemBuddy], source_dir: str,
stdlib.free(worklist)
stdlib.free(processed)
return -1
wl_pos_slot: sizet | t.CPtr = (sizet | t.CPtr)(t.CVoid(wl_pos, t.CPtr))
wl_pos_slot: sizet | t.CPtr = (sizet | t.CPtr)(wl_pos)
wl_pos_slot[0] = 0
while wl_pos_slot[0] < wl_len:
@@ -987,10 +986,10 @@ def _BuildReachableSha1Set(mb: rawptr[memhub.MemBuddy], source_dir: str,
# 输出槽防御性初始化(成功路径必全写;未找到/未命中时仅 free 槽本身)
# 槽联合必须用 (sizet | t.CPtr):t.CPtr|t.CPtr 会被折叠成 t.CPtr,
# [0] 变成 1 字节访问 → 指针被截断(0x2e 崩溃根因)。CSizeT 成员为
# 8 字节,经 t.CVoid 显式做 u64↔指针转换。
abs_slot: sizet | t.CPtr = (sizet | t.CPtr)(t.CVoid(out_abs, t.CPtr))
rel_slot: sizet | t.CPtr = (sizet | t.CPtr)(t.CVoid(out_rel, t.CPtr))
inc_slot: sizet | t.CPtr = (sizet | t.CPtr)(t.CVoid(out_inc, t.CPtr))
# 8 字节,经 t\.CVoid 显式做 u64↔指针转换。
abs_slot: sizet | t.CPtr = (sizet | t.CPtr)(out_abs)
rel_slot: sizet | t.CPtr = (sizet | t.CPtr)(out_rel)
inc_slot: sizet | t.CPtr = (sizet | t.CPtr)(out_inc)
abs_slot[0] = 0
rel_slot[0] = 0
inc_slot[0] = 0
@@ -1003,9 +1002,9 @@ def _BuildReachableSha1Set(mb: rawptr[memhub.MemBuddy], source_dir: str,
stdlib.free(out_inc)
stdlib.free(mod_buf)
continue
abs_path: str = (str)(t.CVoid(abs_slot[0], t.CPtr))
rel_path: str = (str)(t.CVoid(rel_slot[0], t.CPtr))
inc_dir: str = (str)(t.CVoid(inc_slot[0], t.CPtr))
abs_path: str = str(abs_slot[0])
rel_path: str = str(rel_slot[0])
inc_dir: str = str(inc_slot[0])
# 读文件 + 计算 SHA1(CRLF→LF,与 IncludesScanner 一致)
sha1_r2: str = IncludesScanner.compute_file_sha1(mb, abs_path)