Audit for panic/brick risks (a panic = black screen on this device): - sx_send (live-sync broadcasts + 5s heartbeat) pushed to tx_q with no cap. If the editor disconnects without a BYE while sync_armed and nothing drains MIDI-IN, tx_q grows unbounded -> heap exhaustion -> brick. Now drops messages when tx_q > 256 (the heartbeat re-syncs when the host returns). Notes/clock were already capped. - build_setlists now drops empty set lists, so load()/next_track() can never hit a `% 0`. (parse guarantees >=1 lane; built-ins/parsed lists are non-empty, this is belt-and-suspenders.) Other unwrap()s are boot-time peripheral init; lanes[0]/items[0]/step[0] are all safe (parse substitutes beep:4 for empty programs; built-ins lead the list). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| .cargo | ||
| src | ||
| .gitignore | ||
| build.rs | ||
| build.sh | ||
| Cargo.toml | ||
| memory.x | ||
| uf2.py | ||