Steps to reproduce:
1. create a new project in Audacity
2. add several tracks.
3. turn on Sync-Lock (Tracks, Sync-Lock Tracks checked)
4. Click on the Time Shift Tool.
5. Attempt to move tracks to the right (for example), clicking in the bottom track
6. It crashes.
In the function: void TimeShiftHandle::CreateListOfCapturedClips(), the problem was the first occurrence of the line:
auto &trackClip = state.capturedClipArray[i];
The subsequent call to AddClipsToCaptured(), can reallocate the array and so invalidate the reference.
Fix: Don't use a reference. (TrackClip is not a large object.)
... It stopped doing so at 1c1aca5
Because the recreating of the ruler's button now happened earlier than for
the several toolbars, not later, but there was a side-effect on the theme
that the toolbar updates did, that the ruler relied on, namely the updating
of button background images.
Now ruler also invokes that step.
(But wouldn't it be better to do that update in just one place? I am not
sure what that place should be. ThemeBase::LoadPreferredTheme?)
This is caused by the same problem that caused bug 1980. This was fixed for check boxes by commit 42efe53.
Note that the bug in NVDA's audacity appmodule affects controls with the class button: button, check boxes, radio buttons and group boxes.
The fix is similar to the fix for bug 1980:
For group boxes which have an empty label, set the accessibility name to "\a", which is non-empty, but not read by screen readers.
wxWidgets does special things with %.
It uses % to tell it of environment variables.
Rather than escaping %, it is simpler to disable the environment variables thing.
Now the slider is requested bit-rate for both stereo and mono.
e.g. max 160 kbps for mono, 320 kbps for stereo.
Previously it was the requested per-channel bit-rate.
... It was introduced at 2e11844f6a36d4d5218d154db3fb9dfe0996f8c0, so since
2.3.1
A null check on inputTracks() was needed.
This appears to be the only effect where inputTracks() was called while
populating its dialog, so there should not be any similar crashes with other
effects.