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:
1 parent
aa88e46b5d
commit
705de51459
3 files changed
+7
-7
No files matched your search
+2
-2
@@ -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
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in new issue
Block a user