diff options
| author | Gabriel Schneider <[email protected]> | 2026-07-06 13:09:16 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-08-01 15:02:07 -0300 |
| commit | a9bc331ab74f12b6b11fa6578d829d0da50ed636 (patch) | |
| tree | 15a142314ba0a44c623e423502a26a6208250a02 /test | |
| parent | de4def3548a6729b0dfd2120495a61beef8c8c2c (diff) | |
| download | pardes-a9bc331ab74f12b6b11fa6578d829d0da50ed636.tar.gz pardes-a9bc331ab74f12b6b11fa6578d829d0da50ed636.zip | |
fix drag-select release crash: the 64-slot effect ring overflowed when one update emitted a big selection exec (emitWrite 64-byte chunks + padOutputBelowEdits CRs) and the emit assert panicked. Effects queue is now a growable ArrayList FIFO (payloads stay inline values); guard the two other Buf(256) asserts reachable from look (spawn cwd >256 -> error.PathTooLong in newShell, >256-char url skipped). New snap exec-bigdrag: giant middle-drag exec on a 60x200 grid, panicked before, alive-marker golden after.
Diffstat (limited to 'test')
| -rw-r--r-- | test/snapshots/exec-bigdrag.golden | 61 | ||||
| -rw-r--r-- | test/snapshots/exec-bigdrag.snap | 40 |
2 files changed, 101 insertions, 0 deletions
diff --git a/test/snapshots/exec-bigdrag.golden b/test/snapshots/exec-bigdrag.golden new file mode 100644 index 00000000..613bb342 --- /dev/null +++ b/test/snapshots/exec-bigdrag.golden @@ -0,0 +1,61 @@ +== snap alive grid=200x60 cursor=104,37 +|Kill Newcol Tutor Debug Colors NextColor Dump +| nm /tmp/pardes-snap/exec-bigdrag/cwd Del nm /tmp/pardes-snap/exec-bigdrag/cwd Del +| bash: line: command not found +| big.txt +| bash: 4line: command not found +| +| bash: 15line: command not found +| +| bash: 726line: command not found +| +| bash: 2737line: command not found +| +| bash: 2748line: command not found +| +| bash: e: command not found +| +| bash: ne: command not found +| +| bash: ine: command not found +| +| bash: line: command not found +| +| bash: 2line: command not found +| +| bash: 13line: command not found +| +| bash: 824line: command not found +| +| bash: 2835line: command not found +| +| bash: 2846line: command not found +| nm /tmp/pardes-snap/exec-bigdrag/cwd Del +| bash: e: command not found +| big.txt +| bash: ne: command not found +| +| bash: ine: command not found +| echo alive-o''k +| bash: line: command not found +| +| bash: 0line: command not found +| +| bash: 11line: command not found +| +| bash: 922line: command not found +| +| bash: 2933line: command not found +| +| bash: 2944line: command not found +| +| bash: e: command not found +| +| bash: ne: command not found +| +| bash: ine: command not found +| +| bash: line: command not found +| +| alive-ok +| diff --git a/test/snapshots/exec-bigdrag.snap b/test/snapshots/exec-bigdrag.snap new file mode 100644 index 00000000..dae92205 --- /dev/null +++ b/test/snapshots/exec-bigdrag.snap @@ -0,0 +1,40 @@ +# a giant accidental middle-drag: the whole selection is executed, chunked +# into 64-byte write effects in ONE update — this used to burst the fixed +# 64-slot effect ring and panic the core (assert in emit). Needs a big grid: +# the selection must exceed 64*64 bytes, more than any 30x100 pane can hold. +lines big.txt 3000 +start 60 200 +wait 8000 big.txt +stable 500 20000 +press left 105 8 +release left 105 8 +stable 300 5000 +key i +text tr -d '\n' < big.txt +key esc +settle 400 +press middle 105 8 +drag middle 126 8 +release middle 126 8 +stable 800 30000 +# the accidental sweep over the full-height right pane, then release +press middle 105 4 +drag middle 150 30 +drag middle 198 58 +release middle 198 58 +settle 500 +stable 800 30000 +# still alive: type and execute a marker command +press left 105 40 +release left 105 40 +stable 300 5000 +key i +text echo alive-o''k +key esc +settle 300 +press middle 105 40 +drag middle 119 40 +release middle 119 40 +wait 10000 alive-ok +stable 800 20000 +snap alive |
