diff --git a/argparse.vp b/argparse.vp index 6d5c6dd..51c2225 100644 --- a/argparse.vp +++ b/argparse.vp @@ -201,7 +201,7 @@ class ArgumentParser: """Match prefix for --name=value syntax""" for i in range(self._arg_count): 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 token[name_len] == '=': return i @@ -329,7 +329,7 @@ class ArgumentParser: release(args) return None 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 self._store_value(args, arg, value) idx += 1 diff --git a/ast/parser.vp b/ast/parser.vp index 8b36a03..e5c8bba 100644 --- a/ast/parser.vp +++ b/ast/parser.vp @@ -3199,8 +3199,8 @@ def _parse_from_import(ps: Parser*) -> AST*: _advance(ps) if _cur_type(ps) == TokenType.Name and _cur_kw(ps) == Keyword.NotKeyword: next_name: str = _cur_str(ps) - mlen: int = string.strlen(module_name) - nlen: int = string.strlen(next_name) + mlen: int = int(string.strlen(module_name)) # 显式 cast:避免 64→32 隐式窄化 + nlen: int = int(string.strlen(next_name)) # 显式 cast:避免 64→32 隐式窄化 new_mod: str = ps.pool.alloc(mlen + 1 + nlen + 1) if new_mod is not None: string.strcpy(new_mod, module_name) @@ -3252,8 +3252,8 @@ def _parse_alias_list(ps: Parser*) -> list[AST*]*: _advance(ps) if _cur_type(ps) == TokenType.Name: next_n: str = _cur_str(ps) - nmlen: int = string.strlen(name_str) - nxtlen: int = string.strlen(next_n) + nmlen: int = int(string.strlen(name_str)) # 显式 cast:避免 64→32 隐式窄化 + nxtlen: int = int(string.strlen(next_n)) # 显式 cast:避免 64→32 隐式窄化 new_name: str = ps.pool.alloc(nmlen + 1 + nxtlen + 1) if new_name is not None: string.strcpy(new_name, name_str) diff --git a/gzip.vp b/gzip.vp index 2c81dd1..11867d1 100644 --- a/gzip.vp +++ b/gzip.vp @@ -59,7 +59,7 @@ class GzipFile: f.close() self.err = -4 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() if got <= 0 or sizet(got) != self.src_len: stdlib.free(buf)