Skip to content

[1229] scheme 解析器三处越界读修复(迁移自 pr_4399) - #4401

Merged
da-liii merged 2 commits into
MoganLab:mainfrom
da-liii:da/1229/perf
Aug 20, 2026
Merged

[1229] scheme 解析器三处越界读修复(迁移自 pr_4399)#4401
da-liii merged 2 commits into
MoganLab:mainfrom
da-liii:da/1229/perf

Conversation

@da-liii

@da-liii da-liii commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Summary

#4399 迁移 scheme 解析器正确性修复(原 commit 687b0d3):

  • scheme_der.cpp 三处「先读后判界」越界读改为循环顶先判界:
    1. 词元扫描分支 ch= s[end_index]
    2. 引号串扫描分支同款
    3. unslash 尾部 ch= s[i]
  • CR 整串替换改先探测含 CR 才拷贝(启动加载全部 .scm 的必经路径)
  • 修复 block_bench.cpp 失效资源路径(bench/moebius/bench/
  • 新建 scheme_der_test.cpp 9 用例(词元在缓冲区末尾、末尾反斜杠、引号转义、未闭合引号、注释、quote 糖、CR 剔除、block 多表达式)

性能持平(block_bench 5.69→5.77 ns/char,噪声内),本项收益是消除 UB,非性能。

Test

  • xmake test "moebius_tests/*" 18 项全过(含新测试)
  • xmake r block_bench 路径修复后正常运行
  • gf fmt --changed-since=main 通过

🤖 Generated with Claude Code

@da-liii
da-liii merged commit 558958a into MoganLab:main Aug 20, 2026
6 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.

2 participants