fix(mangle): 模块限定的 extern 调用保持裸名

stdlib.system / win32process.ReadProcessMemory 等显式模块限定调用即使本模块有同名 def 也返回裸名。
This commit is contained in:
TermiNexus committed 2026-10-19 14:44:10 +08:00
1 parent d1eb1608d0
commit 8b5bbbc417
1 file changed
+4 -3
+4 -3
View File
@@ -1209,9 +1209,10 @@ class BaseGenMixin:
return func
def _mangle_func_name(self, name: str, module_name: str | None = None) -> str:
if name in self._export_extern_funcs and name not in self._current_module_func_names:
# extern def 一律使用裸名(C/Win32 符号不加模块 SHA1 前缀);
# 但本模块自己定义的同名普通 def(如 os.system / os.getcwd)优先走 SHA1。
if name in self._export_extern_funcs:
# 显式模块限定(stdlib.system / win32process.ReadProcessMemory)或
# 非本模块同名函数 → extern 裸名;本模块无限定同名 def 仍走 SHA1。
if module_name is not None or name not in self._current_module_func_names:
return name
# main 函数作为程序入口点,永远不混淆
if name == 'main':