diff --git a/lib/core/LLVMCG/StructGen.py b/lib/core/LLVMCG/StructGen.py index 9de4ac4..cb5cb40 100644 --- a/lib/core/LLVMCG/StructGen.py +++ b/lib/core/LLVMCG/StructGen.py @@ -253,6 +253,14 @@ class StructGenMixin: # 否则会创建缺少基类字段(如 GSListNode.Next)的本地类型定义, # 导致字段索引错位 → 访问违规崩溃。 _imported_sha1: str = self.class_sha1_map.get(ClassName, '') + if not _imported_sha1: + # 兜底查全局类→模块映射:class_sha1_map 可能因共享 class_methods + # 跨文件泄漏而缺失条目(LlvmGenerator 共享赋值),此时若处于 + # 泛型特化窗口(module_sha1 被切为模板定义模块如 _list 的 sha1), + # _mangle_name 会用错误前缀注册其它模块的类 + # (7cadfe07e983fd90.Translator 跨模块类型错位根因)。 + # _struct_sha1_map 由 Phase2 从 vpi 扫描构建,含全部类的正确模块映射。 + _imported_sha1 = self._struct_sha1_map.get(ClassName, '') if _imported_sha1: mangled_name: str = f"{_imported_sha1}.{ClassName}" else: