Commit a0a1f0e
committed
fix: escape control characters in build_scan_json() for multi-line tokens
The JSON escape loop in build_scan_json() only handled '"' and '\',
but not '\n', '\r', '\t'. When token text contains literal newlines
(e.g., dollar-quoted function bodies like $$\nBEGIN\n...$$),
the raw JSON string had unescaped control characters, causing
JSON.parse to throw 'Bad control character in string literal'.
This adds proper escape sequences for \n, \r, and \t in the
token text escaping loop, matching standard JSON string escaping rules.
New tests added for multi-line dollar-quoted strings, tabs, and
multi-line C-style comments.1 parent 8ad9a92 commit a0a1f0e
2 files changed
Lines changed: 56 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
379 | 379 | | |
380 | 380 | | |
381 | 381 | | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
382 | 394 | | |
383 | | - | |
384 | 395 | | |
385 | 396 | | |
386 | 397 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
225 | 225 | | |
226 | 226 | | |
227 | 227 | | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
228 | 271 | | |
229 | | - | |
| 272 | + | |
0 commit comments