From 6aeea5f8ec42c6d99cd5610d24673978c5e80a28 Mon Sep 17 00:00:00 2001 From: RJ Ryan Date: Sat, 5 Dec 2015 17:32:06 -0800 Subject: [PATCH] Add protection against null NetworkStreamWorker in EngineNetworkStream. Fixes segfault on startup when built with broadcasting disabled. --- src/engine/sidechain/enginenetworkstream.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/engine/sidechain/enginenetworkstream.cpp b/src/engine/sidechain/enginenetworkstream.cpp index 1b5b11e..88734b4 100644 --- a/src/engine/sidechain/enginenetworkstream.cpp +++ b/src/engine/sidechain/enginenetworkstream.cpp @@ -92,6 +92,9 @@ int EngineNetworkStream::getReadExpected() { } void EngineNetworkStream::write(const CSAMPLE* buffer, int frames) { + if (m_pWorker.isNull()) { + return; + } //qDebug() << "EngineNetworkStream::write()" << frames; if (!m_pWorker->threadWaiting()) { @@ -119,6 +122,9 @@ void EngineNetworkStream::write(const CSAMPLE* buffer, int frames) { } void EngineNetworkStream::writeSilence(int frames) { + if (m_pWorker.isNull()) { + return; + } //qDebug() << "EngineNetworkStream::writeSilence()" << frames; if (!m_pWorker->threadWaiting()) { // no thread waiting, so we can advance the stream without @@ -152,6 +158,9 @@ void EngineNetworkStream::writeSilence(int frames) { } void EngineNetworkStream::scheduleWorker() { + if (m_pWorker.isNull()) { + return; + } if (m_pOutputFifo->readAvailable() >= m_numOutputChannels * kNetworkLatencyFrames) { m_pWorker->outputAvailable(); @@ -237,5 +246,7 @@ qint64 EngineNetworkStream::getNetworkTimeUs() { void EngineNetworkStream::addWorker(QSharedPointer pWorker) { m_pWorker = pWorker; - m_pWorker->setOutputFifo(m_pOutputFifo); + if (m_pWorker) { + m_pWorker->setOutputFifo(m_pOutputFifo); + } }