Commit 0691a73
committed
docs: 追加 CDB 引号缺陷(实测复现,不限 Windows),并记下已定的两条
用户报 Windows 上 CDB 的 `-fmodule-file=` 带多余引号,每次构建后要手工删。核实后
比报告的更严重,而且在 Linux 上就能复现 —— 带空格的项目路径 + llvm 工具链:
'-fmodule-file=std=/tmp/.../my project/.../std.pcm <- 闭合引号没了
'-fprebuilt-module-path=/tmp/.../my project/.../pcm.cache'
前两条的闭合引号被切掉:一个参数被从中间劈成两半,还带着孤立的开引号。clangd 逐字
exec `arguments`,拿到的是两个残缺参数。
机制是四步各自合理的叠加:`shell_quote_arg` 的 kNeedsQuote 含反斜杠(Windows 路径必
含,所以那里每个带路径的 flag 都被加引号)→ 加引号对 ninja 是对的 → `split_flags`
撤销 ninja 转义并重新分词 → 但它不认引号。
`split_flags` 自己的注释把原则写对了(「消费者逐字 exec,所以转义必须撤销」),却只
实现了一半 —— 漏掉同一理由下的 shell 引号。
判据必须是「任何 token 不得以引号开头结尾,且带空格的路径是一个 token」,不能是
「clangd 能用了」。回归测试在 Linux 上就能跑;它至今没被发现,正是因为所有 e2e 的
项目路径都不含空格。
同时记下已定的两条:未知格式走 stderr + rc=2;pack --format 声明为例外。1 parent e0abcff commit 0691a73
1 file changed
Lines changed: 71 additions & 4 deletions
Lines changed: 71 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
177 | 177 | | |
178 | 178 | | |
179 | 179 | | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
180 | 242 | | |
181 | 243 | | |
182 | 244 | | |
| |||
190 | 252 | | |
191 | 253 | | |
192 | 254 | | |
193 | | - | |
194 | | - | |
195 | | - | |
196 | | - | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
0 commit comments