mirror of
https://github.com/storytold/soundcraft.git
synced 2026-11-03 00:41:02 -06:00
Commands clamp every position they take to ±2^40 samples so the arithmetic after them can't overflow, but session and clip group files skipped that. A clip, MIDI note, marker, automation point or selection near i64::MAX made Duplicate, Insert Silence, Insert Time, Heal, Trim to File Boundaries, Quantize to Grid, Separate on Grid, Thin Automation, Copy, Move Selection, Extract Chords and Track Commit overflow: a panic in debug builds, wrapped positions in release. MAX_POSITION moves to soundcraft-time so the model can use it. Loading a session clamps clip starts, lengths, offsets, sync points, gain envelopes and MIDI notes, automation points, markers, key changes, the selection, playhead, pre/post-roll, scroll and timecode start. A clip's repairs are now Clip::sanitize, which clip group import uses too, and Session::sanitize visits each collection once. The Edit window adds a clip's offset to its file's time stamp without overflowing.