Index: /trunk/src/VBox/Devices/Audio/DevHDA.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHDA.cpp	(revision 76021)
+++ /trunk/src/VBox/Devices/Audio/DevHDA.cpp	(revision 76022)
@@ -3591,37 +3591,15 @@
         size_t cbBuf;
         RTCircBufAcquireReadBlock(pStream->State.pCircBuf, cbCircBufUsed, &pvBuf, &cbBuf);
-#if 0 /** @todo r=bird: The disabled code crashes on me. The #else case contains something that seems
-       * to make more sense to me.  I'm not saying this is necessarily correct, so please review, fix, and remove. */
-
+        Assert(cbBuf);
         if (cbBuf)
         {
-            size_t cbToRead = cbCircBufUsed;
-            size_t cbEnd    = 0;
-
-            if (cbCircBufUsed > offBuf)
-                cbEnd = cbCircBufUsed - offBuf;
-
-            if (cbEnd) /* Save end of buffer first. */
+            rc = SSMR3PutMem(pSSM, pvBuf, cbBuf);
+            AssertRC(rc);
+            if (   RT_SUCCESS(rc)
+                && cbBuf < cbCircBufUsed)
             {
-                rc = SSMR3PutMem(pSSM, (uint8_t *)pvBuf + cbCircBufSize - cbEnd /* End of buffer */, cbEnd);
-                AssertRCReturn(rc, rc);
-
-                Assert(cbToRead >= cbEnd);
-                cbToRead -= cbEnd;
+                rc = SSMR3PutMem(pSSM, (uint8_t *)pvBuf - offBuf, cbCircBufUsed - cbBuf);
             }
-
-            if (cbToRead) /* Save remaining stuff at start of buffer (if any). */
-            {
-                rc = SSMR3PutMem(pSSM, (uint8_t *)pvBuf - cbCircBufUsed /* Start of buffer */, cbToRead);
-                AssertRCReturn(rc, rc);
-            }
-        }
-
-#else
-        Assert(cbBuf);
-        rc = SSMR3PutMem(pSSM, pvBuf, cbBuf);
-        if (cbBuf < cbCircBufUsed)
-            rc = SSMR3PutMem(pSSM, (uint8_t *)pvBuf - offBuf, cbCircBufUsed - cbBuf);
-#endif
+        }
         RTCircBufReleaseReadBlock(pStream->State.pCircBuf, 0 /* Don't advance read pointer -- see comment above */);
     }
