diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 17e6f55162..ef1811a9eb 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -363,9 +363,16 @@ void SMLoader::ProcessStops( TimingData &out, const vector< pair > } void SMLoader::ProcessBPMsAndStops(TimingData &out, - const vector< pair > &vBPMs, - const vector< pair > &vStops) + vector< pair > &vBPMs, + vector< pair > &vStops) { + // Sort BPM changes and stops + // TODO: Make sorted lists a precondition rather than sorting them here. + // The caller may know that the lists are sorted already (e.g. if + // loaded from cache). + stable_sort(vBPMs.begin(), vBPMs.end()); + stable_sort(vStops.begin(), vStops.end()); + ProcessBPMs(out, vBPMs); ProcessStops(out, vStops); } diff --git a/src/NotesLoaderSM.h b/src/NotesLoaderSM.h index 174e3ff04f..2cca76804d 100644 --- a/src/NotesLoaderSM.h +++ b/src/NotesLoaderSM.h @@ -102,8 +102,8 @@ struct SMLoader * @param vBPMs the vector of BPM changes. * @param vStops the vector of stops. */ void ProcessBPMsAndStops(TimingData &out, - const vector< pair > &vBPMs, - const vector< pair > &vStops); + vector< pair > &vBPMs, + vector< pair > &vStops); /** * @brief Process the Delay Segments from the string. * @param out the TimingData being modified.