fix(lexer): 在token拷贝函数中添加空指针检查

添加了对源指针的空值断言检查,防止在scc_lexer_tok_copy函数中
传入空指针导致崩溃

refactor(pproc): 优化数组到环形缓冲区转换函数的参数命名

修改scc_lexer_array_to_ring函数参数名从array改为move_array,
并在转换后初始化原数组结构,确保资源正确管理

fix(pproc): 修复宏处理中的内存泄漏问题

- 在fill_replacements函数中初始化token结构并正确释放
- 在scc_pproc_parse_function_macro中释放args向量
- 修改token消费逻辑以避免重复消费
- 在指令处理中添加token释放操作

fix(pproc): 改进宏展开过程中的资源管理

- 修复concatenate_tokens函数中的潜在内存泄漏
- 添加对输出向量的断言检查
- 正确释放输入环形缓冲区
- 重构参数拆分逻辑以避免内存泄漏

refactor(pproc): 优化条件解析和宏表设置逻辑

- 修正parse_constant_condition函数中的返回值初始化
- 在宏表设置时处理重复宏名称的情况
- 改进预处理器的整体资源清理流程

fix(pproc): 修复预处理器中的多个内存泄漏

- 在测试代码中添加正确的资源释放
- 修正格式化字符串中的类型匹配
- 优化环形缓冲区初始化逻辑以处理零容量情况
This commit is contained in:
2026-03-02 18:04:43 +08:00
parent 46f5328183
commit beb0b19026
10 changed files with 114 additions and 47 deletions

View File

@@ -77,7 +77,8 @@
*/
#define scc_ring_init(ring, _cap, fill_func, _userdata) \
do { \
(ring).data = scc_malloc((_cap) * sizeof(*(ring).data)); \
(ring).data = \
(_cap) ? scc_malloc((_cap) * sizeof(*(ring).data)) : null; \
(ring).cap = (_cap); \
(ring).head = 0; \
(ring).probe = 0; \