From 093356539bd63cca1b480f644cfac0b34b1b5d8c Mon Sep 17 00:00:00 2001 From: Owen Williams Date: Tue, 4 Aug 2020 12:21:01 -0400 Subject: Fix missing nullptr check. Clarify that pickNonSyncSyncTarget get return nullptr --- src/engine/sync/enginesync.h | 4 +++- src/mixer/basetrackplayer.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/engine/sync/enginesync.h b/src/engine/sync/enginesync.h index 8374d81155..29fc05ff2b 100644 --- a/src/engine/sync/enginesync.h +++ b/src/engine/sync/enginesync.h @@ -52,11 +52,13 @@ class EngineSync : public BaseSyncableListener { void notifyScratching(Syncable* pSyncable, bool scratching) override; // Used to pick a sync target for cases where master sync mode is not sufficient. - // Guaranteed to pick a Syncable that is a real deck and has an EngineBuffer. + // Guaranteed to pick a Syncable that is a real deck and has an EngineBuffer, + // but can return nullptr if there are no choices. // First choice is master sync, if it's a real deck, // then it will fall back to the first playing syncable deck, // then it will fall back to the first playing deck, // then it will fall back to the first non-playing deck. + // If there is literally nothing loaded, returns nullptr. Syncable* pickNonSyncSyncTarget(EngineChannel* pDontPick) const; // Used to test whether changing the rate of a Syncable would change the rate diff --git a/src/mixer/basetrackplayer.cpp b/src/mixer/basetrackplayer.cpp index 2058d66d6a..ebd7b70fd3 100644 --- a/src/mixer/basetrackplayer.cpp +++ b/src/mixer/basetrackplayer.cpp @@ -525,7 +525,9 @@ TrackPointer BaseTrackPlayerImpl::getLoadedTrack() const { void BaseTrackPlayerImpl::slotCloneDeck() { Syncable* syncable = m_pEngineMaster->getEngineSync()->pickNonSyncSyncTarget(m_pChannel); - slotCloneChannel(syncable->getChannel()); + if (syncable) { + slotCloneChannel(syncable->getChannel()); + } } void BaseTrackPlayerImpl::slotCloneFromGroup(const QString& group) { -- cgit v1.2.3