diff --git a/src/plugins/opensles/qopenslesaudioinput.cpp b/src/plugins/opensles/qopenslesaudioinput.cpp
index c3f5ed4220f9de187f6a964ef33b4219fc5e2a45..ad87cb057d391874131d9990bf4dfe0c88deff2f 100644
--- a/src/plugins/opensles/qopenslesaudioinput.cpp
+++ b/src/plugins/opensles/qopenslesaudioinput.cpp
@@ -475,8 +475,11 @@ void QOpenSLESAudioInput::flushBuffers()
 
     qint64 delta = recorderPos * 1000 - devicePos;
 
-    if (delta > 0)
-        writeDataToDevice(m_buffers[m_currentBuffer].constData(), m_format.bytesForDuration(delta));
+    if (delta > 0) {
+        const int writeSize = std::min(m_buffers[m_currentBuffer].size(),
+                                       m_format.bytesForDuration(delta));
+        writeDataToDevice(m_buffers[m_currentBuffer].constData(), writeSize);
+    }
 }
 
 int QOpenSLESAudioInput::bytesReady() const