fix(tpv): 修常量折成0致alloc(0)与多处fail-fast,并落地热点优化
TypeGenCDef: CDefine 表名深拷贝(vpi 注入名为零拷贝指针且 vpi_buf 提前释放,悬空名致常量查出错误值 0) VpiReader: 模块级 SHA1_LEN(16) 改名 SHA1_HEX_LEN,消除与 Phase1.SHA1_LEN(17) 的跨模块同名冲突 CallGenCall: 实参翻译失败/漏传必需实参改 fail-fast,禁用零值兜底(堵住 SHA1_LEN 未解析变 alloc 0 的通路) MatchGenMixin: 序列 match 的 case _ 分支补容量守卫(原先会越界写穿 pool 块、破坏空闲链) Phase1Main/Phase1Scan: 预扫描缓冲分配失败改 fail-fast;加临时取证打点 CallGenBase: find_func_in_module 4 趟链表扫描合并为 2 趟 ImportsGenMixin: import 查找加哈希索引(键为 NUL 结尾副本,未命中回退原扫描) TypeGenBase/TypeGenResolve: 库 typedef 按模块一次性门禁与缓存 VpiReader: vpi 注解解析补 rowptr[T] 分支
This commit is contained in:
1 parent
af2c66e7d7
commit
0dd7511a9b
11 files changed
+666
-136
No files matched your search
@@ -76,8 +76,15 @@ def _ScanClassInheritance(mb: rowptr[memhub.MemBuddy],
|
||||
generic_file_indices: t.CPtr,
|
||||
generic_file_count_box: t.CPtr) -> int:
|
||||
"""预扫描 includes 文件,收集类继承关系"""
|
||||
if result is None or class_names_buf is None or parent_names_buf is None or def_sha1s_buf is None:
|
||||
if result is None:
|
||||
return -1
|
||||
# class_names_buf/parent_names_buf/def_sha1s_buf 由调用方 mb.alloc 分配
|
||||
# (Phase1Main 预扫描前),本函数将其地址直接作为 strcpy 的目的缓冲
|
||||
# (name_dst/parent_dst/sha1_dst)。分配失败返回 NULL 时目的指针为近零地址
|
||||
# → strcpy 写零页(ASan access-violation)。按 fail-fast 规则显式报错终止
|
||||
# (VLogger.error 内部 sys.exit(1)),不静默返回 -1 交由调用方宽容跳过。
|
||||
if class_names_buf is None or parent_names_buf is None or def_sha1s_buf is None:
|
||||
VLogger.error("类继承预扫描扁平缓冲分配失败(class_names_buf/parent_names_buf/def_sha1s_buf 为 NULL)", "Phase1")
|
||||
|
||||
entry_size: sizet = IncludesScanner.FileEntry.__sizeof__()
|
||||
class_count: int = 0
|
||||
|
||||
Reference in new issue
Block a user