[kernel]: fix incorrect %hh format output for values in [0x80, 0xff]#11210
[kernel]: fix incorrect %hh format output for values in [0x80, 0xff]#11210rsj123 wants to merge 1 commit intoRT-Thread:masterfrom
Conversation
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: kernelReviewers: @GorrayLi @ReviewSun @hamburger-os @lianux-mm @wdfk-prog @xu18838022837 Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-02-21 03:05 CST)
📝 Review Instructions
|
拉取/合并请求描述:(PR description)
为什么提交这份PR (why to submit this PR)
#11171
rt_vsnprintf_tiny 中 %hh 修饰符处理存在 bug,当 int8_t/uint8_t 变量值在 [0x80, 0xff] 区间时,%hhu 输出错误。
exp:
你的解决方案是什么 (what is your solution)
原始代码:
在 src/klibc/rt_vsnprintf_tiny.c 第 563 行,
qualifier == 'H'(对应 %hh)分支中:无论有符号还是无符号格式,都先用
(rt_int8_t)做了有符号截断,导致符号扩展。对于%hhu等无符号格式,不会进入 SIGN 分支修正,num 保持错误的 0xFFFFFFFF。修复:将
(rt_int8_t)改为(rt_uint8_t),先做无符号截断,仅在 SIGN 标志位置位时才做(rt_int8_t)符号扩展。请提供验证的bsp和config (provide the config and bsp)
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up