[drivers][serial/v2] fix missing break after -RT_EPERM when buf size is 0#11397
[drivers][serial/v2] fix missing break after -RT_EPERM when buf size is 0#11397kaidegit wants to merge 2 commits into
Conversation
…is 0 When rx_bufsz or tx_bufsz is 0, the driver returns -RT_EPERM but falls through to RT_ASSERT(rx_fifo/tx_fifo != RT_NULL). Since serial_rx/serial_tx is NULL in non-buffered mode, this triggers an assertion failure. Add break after setting ret = -RT_EPERM in the four affected cases: - RT_SERIAL_CTRL_SET_RX_TIMEOUT - RT_SERIAL_CTRL_SET_TX_TIMEOUT - RT_SERIAL_CTRL_GET_RX_TIMEOUT - RT_SERIAL_CTRL_GET_TX_TIMEOUT
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: componentsReviewers: @Maihuanyi Changed Files (Click to expand)
🏷️ Tag: components_driver_serial_v2Reviewers: @Ryan-CW-Code Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-05-17 10:57 CST)
📝 Review Instructions
|
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
使用serial v2,在tx_fifo为0时,printf报错。
你的解决方案是什么 (what is your solution)
修复 Serial V2 驱动在缓冲区大小为 0 时返回
-RT_EPERM后缺少break导致的空指针访问问题。当串口以非缓冲模式工作时(
rx_bufsz == 0或tx_bufsz == 0),serial_rx/serial_tx为NULL。此时若通过rt_device_control()设置/获取超时时间,驱动会返回-RT_EPERM,但未跳出当前 case,导致继续执行到RT_ASSERT(rx_fifo/tx_fifo != RT_NULL),触发断言失败。请提供验证的bsp和config (provide the config and bsp)
n32wb452(ble lib里面似乎使用了printf,然后它里面打log就报断言)
.config:
action:
]
当前拉取/合并请求的状态 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