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:
1 parent
cd55a7e214
commit
df2de5ecfa
4 files changed
+7
-10
No files matched your search
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user