fix(includes): 消除隐式窄化(string.strlen → int)

规则收紧后,6 处 string.strlen()(sizet/64 位)隐式落进 int 会报隐式窄化:argparse.vp:204/332、ast/parser.vp:3202/3203/3255/3256 改为显式 int(...);另 gzip.vp:62 的 read_all 容量去掉多余 ULONG(...)(形参已是 sizet)。
This commit is contained in:
TermiNexus committed 2026-10-10 22:09:59 +08:00
1 parent aa88e46b5d
commit 705de51459
3 files changed
+7 -7

No files matched your search

+2 -2
View File
@@ -201,7 +201,7 @@ class ArgumentParser:
"""Match prefix for --name=value syntax""" """Match prefix for --name=value syntax"""
for i in range(self._arg_count): for i in range(self._arg_count):
arg: Argument* = self._get_arg(i) arg: Argument* = self._get_arg(i)
name_len: int = string.strlen(arg.name) name_len: int = int(string.strlen(arg.name)) # 显式 cast:避免 64→32 隐式窄化
if string.strncmp(token, arg.name, name_len) == 0: if string.strncmp(token, arg.name, name_len) == 0:
if token[name_len] == '=': if token[name_len] == '=':
return i return i
@@ -329,7 +329,7 @@ class ArgumentParser:
release(args) release(args)
return None return None
arg = self._get_arg(found) arg = self._get_arg(found)
arg_name_len: int = string.strlen(arg.name) arg_name_len: int = int(string.strlen(arg.name)) # 显式 cast:避免 64→32 隐式窄化
value = token + arg_name_len + 1 value = token + arg_name_len + 1
self._store_value(args, arg, value) self._store_value(args, arg, value)
idx += 1 idx += 1
+4 -4
View File
@@ -3199,8 +3199,8 @@ def _parse_from_import(ps: Parser*) -> AST*:
_advance(ps) _advance(ps)
if _cur_type(ps) == TokenType.Name and _cur_kw(ps) == Keyword.NotKeyword: if _cur_type(ps) == TokenType.Name and _cur_kw(ps) == Keyword.NotKeyword:
next_name: str = _cur_str(ps) next_name: str = _cur_str(ps)
mlen: int = string.strlen(module_name) mlen: int = int(string.strlen(module_name)) # 显式 cast:避免 64→32 隐式窄化
nlen: int = string.strlen(next_name) nlen: int = int(string.strlen(next_name)) # 显式 cast:避免 64→32 隐式窄化
new_mod: str = ps.pool.alloc(mlen + 1 + nlen + 1) new_mod: str = ps.pool.alloc(mlen + 1 + nlen + 1)
if new_mod is not None: if new_mod is not None:
string.strcpy(new_mod, module_name) string.strcpy(new_mod, module_name)
@@ -3252,8 +3252,8 @@ def _parse_alias_list(ps: Parser*) -> list[AST*]*:
_advance(ps) _advance(ps)
if _cur_type(ps) == TokenType.Name: if _cur_type(ps) == TokenType.Name:
next_n: str = _cur_str(ps) next_n: str = _cur_str(ps)
nmlen: int = string.strlen(name_str) nmlen: int = int(string.strlen(name_str)) # 显式 cast:避免 64→32 隐式窄化
nxtlen: int = string.strlen(next_n) nxtlen: int = int(string.strlen(next_n)) # 显式 cast:避免 64→32 隐式窄化
new_name: str = ps.pool.alloc(nmlen + 1 + nxtlen + 1) new_name: str = ps.pool.alloc(nmlen + 1 + nxtlen + 1)
if new_name is not None: if new_name is not None:
string.strcpy(new_name, name_str) string.strcpy(new_name, name_str)
+1 -1
View File
@@ -59,7 +59,7 @@ class GzipFile:
f.close() f.close()
self.err = -4 self.err = -4
return return
got: LONG = f.read_all(buf, ULONG(self.src_len + 1)) got: LONG = f.read_all(buf, self.src_len + 1) # 去掉 ULONG 显式窄化:read_all 的 buf_size 形参本就是 sizet,直接以 sizet 传更安全
f.close() f.close()
if got <= 0 or sizet(got) != self.src_len: if got <= 0 or sizet(got) != self.src_len:
stdlib.free(buf) stdlib.free(buf)