Skip to content

fix(基础库): 统一平台判定并修正路径展开与管道关闭 - #417

Merged
ccmywish merged 7 commits into
RubyMetric:devfrom
Mikachu2333:split/env-xy-portability
Nov 13, 2026
Merged

ccmywish merged 7 commits into
RubyMetric:devfrom
Mikachu2333:split/env-xy-portability

Conversation

@Mikachu2333

Copy link
Copy Markdown
Collaborator

问题描述

编译期与运行期 Windows 判定可能不一致,路径检查缺少空指针保护,管道关闭也未统一平台接口。

关联 #402。

方案与实现

统一平台判定与 xy_pclose,支持 Windows 路径环境变量展开,并补充路径相关测试。

本 PR 从 #402 独立拆出,直接基于 dev,可以单独审查和合并。

验证:此分支独立通过 Windows just build/test/bd、WSL Debian make build/test/bd,以及调试程序的只读查询。

@github-actions

Copy link
Copy Markdown

Hi @Mikachu2333

❤️ 感谢你的贡献!我们将在最少半小时,最多5天内阅读此 PR 并回复你

Comment thread lib/xy.h Resolved
@Mikachu2333
Mikachu2333 force-pushed the split/env-xy-portability branch from 87b9247 to fa1a78d Compare November 10, 2026 13:59
Comment thread lib/xy.h
wchar_t *wpath = _xy_win_wstr (new);
if (wpath)
{
DWORD needed = ExpandEnvironmentStringsW (wpath, NULL, 0);

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

注,这个地方等env合入以后可以直接调用现成的函数,不再需要手写解析

@Mikachu2333
Mikachu2333 requested a review from ccmywish November 11, 2026 03:42
@Mikachu2333 Mikachu2333 self-assigned this Nov 11, 2026
Comment thread test/xy-path.c Resolved
Comment thread lib/xy.h Resolved
Comment thread lib/xy.h Resolved
Comment thread lib/xy.h Resolved
Comment thread lib/xy.h Resolved
Comment thread lib/xy.h Resolved
Comment thread lib/xy.h Resolved
@ccmywish ccmywish added this to the v0.2.8 milestone Nov 11, 2026
@Mikachu2333
Mikachu2333 force-pushed the split/env-xy-portability branch from fa1a78d to c974c98 Compare November 11, 2026 06:24
@Mikachu2333
Mikachu2333 requested a review from ccmywish November 12, 2026 05:05
@ccmywish

Copy link
Copy Markdown
Contributor

文件有冲突了,需要改一下

Mikachu2333 and others added 7 commits November 13, 2026 12:39
编译期与运行期 Windows 判定可能不一致,路径检查缺少空指针保护,管道关闭也未统一平台接口。

统一平台判定与 xy_pclose,支持 Windows 路径环境变量展开,并补充路径相关测试。

从 RubyMetric#402 按功能拆出,直接基于 dev;Windows/POSIX 独立构建及现有测试通过。
perf(基础库): 减少路径判断的重复查询和编码转换
@Mikachu2333
Mikachu2333 force-pushed the split/env-xy-portability branch from 1844ee6 to 6a8c415 Compare November 13, 2026 04:45
@Mikachu2333

Copy link
Copy Markdown
Collaborator Author

改完了,已rebase完毕

@ccmywish
ccmywish merged commit 3262eaf into RubyMetric:dev Nov 13, 2026
@Mikachu2333
Mikachu2333 deleted the split/env-xy-portability branch November 13, 2026 08:34
ccmywish added a commit that referenced this pull request Nov 13, 2026
@ccmywish

Copy link
Copy Markdown
Contributor

_xy_detect_os() 不能直接靠宏来判断,因为 Windows 上编译的程序,可能被放在 MSYS2 或 Cygwin 中执行,也是能执行的,甚至这在MSYS2用户中很常见。所以运行时的环境得完全靠运行时来测试。

通过这个例子,我觉得 AI 能写出看似正确的代码,但是有时候并不正确。

@Mikachu2333

Copy link
Copy Markdown
Collaborator Author

_xy_detect_os() 不能直接靠宏来判断,因为 Windows 上编译的程序,可能被放在 MSYS2 或 Cygwin 中执行,也是能执行的,甚至这在MSYS2用户中很常见。所以运行时的环境得完全靠运行时来测试。

确实,这也非常考验审核者的经验积累,由于我本人不用msys2和cygwin,因此在审查的时候查了一下资料感觉正确就跳过了

@Mikachu2333

Copy link
Copy Markdown
Collaborator Author

那等我再提个pr改一下这个地方?还是你改? @ccmywish

@Mikachu2333

Copy link
Copy Markdown
Collaborator Author

看到了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Windows Windows相关 平台 平台 Platform 改善加强 改善加强

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants