diff --git a/samplebuffer.cpp b/samplebuffer.cpp index f550474..437eee7 100644 --- a/samplebuffer.cpp +++ b/samplebuffer.cpp @@ -29,6 +29,9 @@ template std::unique_ptr SampleBuffer::getSamples(off_t start, off_t length) { auto samples = src->getSamples(start, length); + if (samples == nullptr) + return nullptr; + std::unique_ptr dest(new Tout[length]); work(samples.get(), dest.get(), length); return dest; diff --git a/traceplot.cpp b/traceplot.cpp index 133c557..83b221c 100644 --- a/traceplot.cpp +++ b/traceplot.cpp @@ -32,6 +32,9 @@ void TracePlot::paintMid(QPainter &painter, QRect &rect, range_t sampleRa // Is it a 2-channel (complex) trace? if (auto src = dynamic_cast>*>(sampleSource.get())) { auto samples = src->getSamples(firstSample, length); + if (samples == nullptr) + return; + painter.setPen(Qt::red); plotTrace(painter, rect, reinterpret_cast(samples.get()), length, 2); painter.setPen(Qt::blue); @@ -40,6 +43,9 @@ void TracePlot::paintMid(QPainter &painter, QRect &rect, range_t sampleRa // Otherwise is it single channel? } else if (auto src = dynamic_cast*>(sampleSource.get())) { auto samples = src->getSamples(firstSample, length); + if (samples == nullptr) + return; + painter.setPen(Qt::green); plotTrace(painter, rect, samples.get(), length, 1); } else {