refactor: 去 t.CPtr(&a) 冗余包装(R15)

TransPyV 4 文件 / 7 行:Phase/BuildPipeline.vp、core/Gen/AssignGenMixin.vp、core/Gen/TranslatorGenMixin.vp。验证:自举三重重编 SUCCESS + 全量 77 项顺序回归通过。
This commit is contained in:
TermiNexus committed 2026-10-05 17:55:52 +08:00
1 parent cd55a7e214
commit df2de5ecfa
4 files changed
+7 -10

No files matched your search

+5 -5
View File
@@ -570,16 +570,16 @@ def _run_cmd_wait(cmd: str) -> int:
pi: win32process.PROCESS_INFORMATION = win32process.PROCESS_INFORMATION()
# T() only allocas, no memset: unset STARTUPINFOA fields are stack garbage, so concurrent
# threads get random dwFlags and CreateProcessA uses junk stdio handles. Clear si/sa/pi.
string.memset(t.CPtr(&si), 0, win32process.STARTUPINFOA.__sizeof__())
string.memset(t.CPtr(&sa), 0, w32.win32base.SECURITY_ATTRIBUTES.__sizeof__())
string.memset(t.CPtr(&pi), 0, win32process.PROCESS_INFORMATION.__sizeof__())
string.memset(&si, 0, win32process.STARTUPINFOA.__sizeof__())
string.memset(&sa, 0, w32.win32base.SECURITY_ATTRIBUTES.__sizeof__())
string.memset(&pi, 0, win32process.PROCESS_INFORMATION.__sizeof__())
sa.nLength = w32.win32base.SECURITY_ATTRIBUTES.__sizeof__()
sa.lpSecurityDescriptor = t.CPtr(0)
sa.bInheritHandle = 1
si.cb = win32process.STARTUPINFOA.__sizeof__()
# create_flags=0: the child inherits the parent console (output shown, like system);
# si.dwFlags stays 0 after memset (no STARTF_USESTDHANDLES, no std handles).
ok: int = win32process.CreateProcessA(t.CPtr(0), cmd_line, t.CPtr(0), t.CPtr(0), 1, 0, t.CPtr(0), t.CPtr(0), t.CPtr(&si), t.CPtr(&pi))
ok: int = win32process.CreateProcessA(t.CPtr(0), cmd_line, t.CPtr(0), t.CPtr(0), 1, 0, t.CPtr(0), t.CPtr(0), &si, &pi)
# CreateProcessA failure diagnostics: read GetLastError immediately (later calls overwrite
# it). Use warning, not error (error would sys.exit in a worker thread).
if ok == 0:
@@ -589,7 +589,7 @@ def _run_cmd_wait(cmd: str) -> int:
if ok == 0: return -1
win32sync.WaitForSingleObject(pi.hProcess, w32.win32base.INFINITE)
exit_code: uint32 = 0
win32process.GetExitCodeProcess(pi.hProcess, t.CPtr(&exit_code))
win32process.GetExitCodeProcess(pi.hProcess, &exit_code)
w32.win32base.CloseHandle(pi.hProcess)
w32.win32base.CloseHandle(pi.hThread)
return int(exit_code)