Index: /trunk/src/VBox/Devices/Audio/DrvHostPulseAudio.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvHostPulseAudio.cpp	(revision 67908)
+++ /trunk/src/VBox/Devices/Audio/DrvHostPulseAudio.cpp	(revision 67909)
@@ -889,11 +889,13 @@
         }
 
-        size_t cbToWrite = RT_MIN(cbWriteable, cbBuf);
-
-        uint32_t cbWritten;
-        while (cbToWrite)
-        {
-            cbWritten = cbToWrite;
-            if (pa_stream_write(pPAStream->pStream, (uint8_t *)pvBuf + cbWrittenTotal, cbWritten, NULL /* Cleanup callback */,
+        size_t cbLeft = RT_MIN(cbWriteable, cbBuf);
+
+        while (cbLeft)
+        {
+            size_t cbToWrite = RT_MIN(cbLeft, pa_stream_writable_size(pPAStream->pStream));
+            if (cbToWrite <= (size_t)0)
+                break;
+
+            if (pa_stream_write(pPAStream->pStream, (uint8_t *)pvBuf + cbWrittenTotal, cbToWrite, NULL /* Cleanup callback */,
                                 0, PA_SEEK_RELATIVE) < 0)
             {
@@ -902,7 +904,7 @@
             }
 
-            Assert(cbToWrite >= cbWritten);
-            cbToWrite      -= cbWritten;
-            cbWrittenTotal += cbWritten;
+            Assert(cbLeft  >= cbToWrite);
+            cbLeft         -= cbToWrite;
+            cbWrittenTotal += cbToWrite;
         }
 
