1-measure repeat at end of section causes repeat list to continue afterwards

• Aug 15, 2015 - 10:03

repeat28.mscx has 3 measures:

| m1 |: m2 :| SECTION_BREAK, |m3|

expected behavior repeat list: m1, m2, m2, m3.
actual behavior on 2.0.2 and current master: m1, m2, m3

Since the repeat list continues on, I am able to produce a CRASH in second attached example, which is prepared with a DC al Fine on that m2 but without a corresponding Fine in that section. If I delete that DC al Fine and then do some modification that will dirty the repeat list, e.g. if I insert a measure somewhere in the next section, then repeatlist:unwind will crash inside qDeleteAll(*this) (I think there may be some double deletion going on or something). (note, I haven't fully cleaned this second test example down to the minimal steps necessary to produce crash, but regardless, I think this crash will be fixed if I fix the simpler case in repeat28.mscx) ...unable to reproduce on master git at the moment, although was crashing on 2.0.2 while I was writing code to fix #65161: Da Capo/Da Segno al Fine ignore next section on playback ...



note: I mark "critical" because cause crash, even though may be rare and uses arguably rare garbage input...I'm about to fix with PR...problem is RepeatList::jumpToStartRepeat

if (nm->sectionBreak() && nm->nextMeasure()) {
nm = nm->nextMeasure();


hmm...wait I can't seem to reproduce the crash on a fresh checkout of master...although the first repeat28.mscx error is still there...let me investigate a little bit more...

Fixed in branch master, commit 7c6ad688d4

Merge pull request #2168 from ericfont/73486-73496-jumpToStartRepeat-evaluate-conditions-in-proper-order-also-ctests-j2

Fix #73486 Fix #73496 rewrite jumpToStartRepeat reorder conditions eval