diff options
-rw-r--r-- | src/multimediakit/audio/qaudiooutput_mac_p.cpp | 9 |
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; |