Skip to content

Commit b5bf4ea

Browse files
committed
Fix crash when adding loop boundaries to an empty score
1 parent e423dca commit b5bf4ea

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/notation/internal/notationplayback.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,16 @@ RetVal<muse::midi::tick_t> NotationPlayback::playPositionTickByElement(const Eng
312312

313313
void NotationPlayback::addLoopBoundary(LoopBoundaryType boundaryType, tick_t tick)
314314
{
315+
const Measure* first = score()->firstMeasure();
316+
const Measure* last = score()->lastMeasure();
317+
IF_ASSERT_FAILED(first && last) {
318+
return;
319+
}
320+
315321
if (tick == BoundaryTick::FirstScoreTick) {
316-
tick = score()->firstMeasure()->tick().ticks();
322+
tick = first->tick().ticks();
317323
} else if (tick == BoundaryTick::LastScoreTick) {
318-
tick = score()->lastMeasure()->endTick().ticks();
324+
tick = last->endTick().ticks();
319325
}
320326

321327
switch (boundaryType) {

src/playback/internal/playbackcontroller.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
#include "playbacktypes.h"
2727

28+
#include "engraving/dom/masterscore.h"
2829
#include "engraving/dom/stafftext.h"
2930
#include "engraving/dom/utils.h"
3031
#include "engraving/dom/factory.h"
@@ -900,6 +901,12 @@ void PlaybackController::toggleLoopPlayback()
900901
return;
901902
}
902903

904+
const MasterScore* score = m_masterNotation ? m_masterNotation->masterScore() : nullptr;
905+
const Measure* first = score ? score->firstMeasure() : nullptr;
906+
if (!first) {
907+
return;
908+
}
909+
903910
if (loopBoundariesSet() && !selection()->isRange()) {
904911
enableLoop();
905912
return;

0 commit comments

Comments
 (0)