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)
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
import t, c
|
||||
from stdint import *
|
||||
import memhub
|
||||
import lib.core.VLogger as VLogger
|
||||
|
||||
|
||||
# lib package entry - declares the global _mbuddy memory-pool pointer.
|
||||
|
||||
@@ -370,7 +370,7 @@ novirtual class AssignGenMixin:
|
||||
# Recover the float value from the source file (AST float_val may be overwritten)
|
||||
use_val: double = cn_fp.float_val
|
||||
rec_d: double = 0.0
|
||||
if self._recover_cdefine_float(name, t.CPtr(&rec_d)) != 0: use_val = rec_d
|
||||
if self._recover_cdefine_float(name, &rec_d) != 0: use_val = rec_d
|
||||
else:
|
||||
# Source recovery failed: fail fast to avoid registering a corrupted float
|
||||
self.Gen.TypeGenErr.fatal_error(val_node, "CDefine 浮点值源文件恢复失败", "InternalCompilerError")
|
||||
|
||||
@@ -632,7 +632,7 @@ novirtual class TranslatorGenMixin:
|
||||
if is_fty_g == 0:
|
||||
self.Gen.TypeGenErr.fatal_error(node, f"模块级变量 '{var_name}' 用浮点字面量初始化,但注解不是浮点类型", "TypeError")
|
||||
return 0
|
||||
if self.Gen.AssignGen._recover_float_literal(var_name, t.CPtr(&init_fval), 0) != 1:
|
||||
if self.Gen.AssignGen._recover_float_literal(var_name, &init_fval, 0) != 1:
|
||||
self.Gen.TypeGenErr.fatal_error(node, f"模块级浮点变量 '{var_name}' 初始化值源文件恢复失败", "InternalCompilerError")
|
||||
return 0
|
||||
|
||||
|
||||
Reference in new issue
Block a user