Skip to content

FIX: 增加未初始化调用防护,修正初始化校验顺序#51

Merged
530china merged 1 commit into
masterfrom
develop
Mar 9, 2026
Merged

FIX: 增加未初始化调用防护,修正初始化校验顺序#51
530china merged 1 commit into
masterfrom
develop

Conversation

@530china

@530china 530china commented Mar 9, 2026

Copy link
Copy Markdown
Owner

Why:

  1. bits_button_ticks() 和 bits_button_reset_states() 在未调用 bits_button_init() 时, 会因 _read_button_level 为 NULL 导致崩溃,现在入口添加 NULL 防护提前返回;
  2. bits_button_init() 在校验完成前就 memset 清零全局状态,导致后续校验失败时 之前成功的初始化配置被破坏。现将所有参数校验移至 memset 之前,确保校验 全部通过后才修改全局状态;
  3. 补充 buffer_modes.md 中 C11 缓冲区的 SPSC 线程安全约束说明, 明确裸机主循环、中断+主循环、RTOS 多线程三种场景的安全使用方式

Why:
1. bits_button_ticks() 和 bits_button_reset_states() 在未调用 bits_button_init() 时,
   会因 _read_button_level 为 NULL 导致崩溃,现在入口添加 NULL 防护提前返回;
2. bits_button_init() 在校验完成前就 memset 清零全局状态,导致后续校验失败时
   之前成功的初始化配置被破坏。现将所有参数校验移至 memset 之前,确保校验
   全部通过后才修改全局状态;
3. 补充 buffer_modes.md 中 C11 缓冲区的 SPSC 线程安全约束说明,
   明确裸机主循环、中断+主循环、RTOS 多线程三种场景的安全使用方式
@530china 530china merged commit d216c6a into master Mar 9, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant