fix(sdk): 评审 p2 修正 — 负 nsec 判 EINVAL / 音频条件等待计数改 5 处
- meow_ui_time.c `__timedwait_cp`:`at->tv_nsec` 是有符号 long,原写法 `>= 1000000000L` 会让负 nsec 通过(musl 原文用 `>= 1000000000UL`,负值按无符号 比较同样判 EINVAL)。改为 `< 0 || >= 1000000000L`,与本文件 M11 的 `__clock_nanosleep` 写法一致;同时避开 `-Wsign-compare`(UL 写法在 -Wextra 下 会告警)。反汇编确认 llvm 合并成一条 `sltu`,与 musl 的 unsigned 比较等价。 - CLOCK_ABI.md:meow_ui_audio.c 的 pthread_cond_timedwait 调用点由「3 处」改为 5 处(:312/:351/:417/:431/:499),§5/§6 两处同步;核对文中其它计数(四 App、 23 项单测)无误。 验证:宿主 gcc -Wall -Wextra 0 warning,test_meow_time64 23 项 PASS、 test_meow_time 回归 PASS;交叉 zig -Wall -Wextra 0 warning; build_sdk_host.sh --verify 76 成员全 MIPS32r2、0 warning;归档内 meow_ui_time.o 与新鲜交叉构建逐字节一致。
This commit is contained in:
1 parent
40ac1e40f0
commit
a7bd6c44d9
2 files changed
+6
-3
No files matched your search
@@ -246,7 +246,8 @@ int __timedwait_cp(volatile int *addr, int val, clockid_t clk,
|
||||
if (priv) priv = MEOW_FUTEX_PRIVATE;
|
||||
|
||||
if (at) {
|
||||
if (at->tv_nsec >= 1000000000L) return EINVAL;
|
||||
/* musl 原文是 `>= 1000000000UL`(负值按无符号也判 EINVAL);显式判负以保 -Wextra 0 warning */
|
||||
if (at->tv_nsec < 0 || at->tv_nsec >= 1000000000L) return EINVAL;
|
||||
if (__clock_gettime(clk, &to)) return EINVAL;
|
||||
to.tv_sec = at->tv_sec - to.tv_sec;
|
||||
if ((to.tv_nsec = at->tv_nsec - to.tv_nsec) < 0) {
|
||||
|
||||
Reference in new issue
Block a user