summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/multimediakit/audio/qaudiooutput_mac_p.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/multimediakit/audio/qaudiooutput_mac_p.cpp b/src/multimediakit/audio/qaudiooutput_mac_p.cpp
index fcaa3cbd2..17d3d1ff8 100644
--- a/src/multimediakit/audio/qaudiooutput_mac_p.cpp
+++ b/src/multimediakit/audio/qaudiooutput_mac_p.cpp
@@ -108,9 +108,14 @@ public:
QAudioRingBuffer::Region region = m_buffer->acquireReadRegion((maxFrames - framesRead) * m_bytesPerFrame);
if (region.second > 0) {
+ // Ensure that we only read whole frames.
region.second -= region.second % m_bytesPerFrame;
- memcpy(data + (framesRead * m_bytesPerFrame), region.first, region.second);
- framesRead += region.second / m_bytesPerFrame;
+
+ if (region.second > 0) {
+ memcpy(data + (framesRead * m_bytesPerFrame), region.first, region.second);
+ framesRead += region.second / m_bytesPerFrame;
+ } else
+ wecan = false; // If there is only a partial frame left we should exit.
}
else
wecan = false;