illegal repeatsegment

• Dec 22, 2021 - 22:03
Reported version
3.6
Priority
P1 - High
Type
Functional
Frequency
Few
Severity
S2 - Critical
Reproducibility
Always
Status
closed
Regression
No
Workaround
Yes
Project
Tags

1.) Open attached score or create a score with:
* Open Volta that has to be skipped
* Jump at end of open volta
* End Repeat at same bar as that Jump
* Jump+End Repeat must be at section/score end

2.) Press Rewind/Play

Expected Result: Rewind/Play executed
Actual Result: crash

Original report and stacktrace by Jojo at https://musescore.org/en/node/309288#comment-1107749

Attachment Size
repeat67.mscx 6.17 KB

Comments

Parsing logic made it so that the Jump aborts the volta, but doing so leads to the repeat no longer being covered by it.
As a consequence, unwinding then tries to add a nullptr repeatsegment to the repeatlist due to processing that repeat after skipping the volta. Further processing of the repeatlist by other functionality (such as UpdateTempo) then crashes on the unexpected nullptr in it.

In reply to by Jojo-Schmitz

It stops right before that fine and is intended:
The "5" is skipped, next for evaluation is the "1,2,3,4" (which is actually a "2") and it is also skipped (no repeats yet, thus playcount is still one). That volta covers the end repeat barline and as such the repeat instruction is also skipped at which point the end of section/score is hit. Which in turn makes playback stop.

Fix version
4.0.0