Index: /trunk/src/VBox/Devices/Audio/DevIchAc97.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevIchAc97.cpp	(revision 54980)
+++ /trunk/src/VBox/Devices/Audio/DevIchAc97.cpp	(revision 54981)
@@ -1049,5 +1049,5 @@
     uint32_t    addr           = pReg->bd.addr;
     uint32_t    cbWrittenTotal = 0;
-    uint32_t    cbToRead       = 0;
+    uint32_t    cbToRead;
 
     uint32_t cbToWrite = RT_MIN((uint32_t)(pReg->picb << 1), cbMax);
@@ -1079,4 +1079,5 @@
             int rc2 = pDrv->pConnector->pfnWrite(pDrv->pConnector, pDrv->Out.pStrmOut,
                                                  pThis->pvReadWriteBuf, cbToRead, &cbWritten);
+            AssertRCBreak(rc);
             if (RT_FAILURE(rc2))
                 continue;
@@ -1285,6 +1286,4 @@
     PAC97DRIVER pDrv;
 
-    LogFlowFuncEnter();
-
     uint32_t cbIn, cbOut, cSamplesLive;
     RTListForEach(&pThis->lstDrv, pDrv, AC97DRIVER, Node)
@@ -1304,8 +1303,11 @@
                                  pDrv->uLUN, cSamplesLive, cSamplesPlayed));
 
-                rc = pDrv->pConnector->pfnQueryStatus(pDrv->pConnector,
-                                                      &cbIn, &cbOut, &cSamplesLive);
-                if (RT_SUCCESS(rc))
-                    LogFlowFunc(("\tLUN#%RU8: [2] cbIn=%RU32, cbOut=%RU32\n", pDrv->uLUN, cbIn, cbOut));
+                if (cSamplesPlayed)
+                {
+                    rc = pDrv->pConnector->pfnQueryStatus(pDrv->pConnector,
+                                                          &cbIn, &cbOut, &cSamplesLive);
+                    if (RT_SUCCESS(rc))
+                        LogFlowFunc(("\tLUN#%RU8: [2] cbIn=%RU32, cbOut=%RU32\n", pDrv->uLUN, cbIn, cbOut));
+                }
             }
 
@@ -1337,6 +1339,4 @@
     TMTimerSet(pThis->pTimer, TMTimerGet(pThis->pTimer) + pThis->uTicks);
 
-    LogFlowFuncLeave();
-
     STAM_PROFILE_STOP(&pThis->StatTimer, a);
 }
@@ -1366,5 +1366,5 @@
     }
 
-    int rc;
+    int rc = VINF_SUCCESS;
     uint32_t cbWrittenTotal = 0;
 
@@ -1402,32 +1402,32 @@
         {
             case PO_INDEX:
+            {
+                rc = ichac97WriteAudio(pThis, pReg, cbElapsed, &cbTransferred);
+                if (   RT_SUCCESS(rc)
+                    && cbTransferred)
                 {
-                    rc = ichac97WriteAudio(pThis, pReg, cbElapsed, &cbTransferred);
-                    if (RT_SUCCESS(rc)
-                        && cbTransferred)
-                    {
-                        cbWrittenTotal += cbTransferred;
-                        Assert(cbElapsed >= cbTransferred);
-                        cbElapsed      -= cbTransferred;
-                        Assert((cbTransferred & 1) == 0);    /* Else the following shift won't work */
-                        pReg->picb     -= (cbTransferred >> 1);
-                    }
-                    break;
+                    cbWrittenTotal += cbTransferred;
+                    Assert(cbElapsed >= cbTransferred);
+                    cbElapsed      -= cbTransferred;
+                    Assert((cbTransferred & 1) == 0);    /* Else the following shift won't work */
+                    pReg->picb     -= (cbTransferred >> 1);
                 }
+                break;
+            }
 
             case PI_INDEX:
             case MC_INDEX:
+            {
+                rc = ichac97ReadAudio(pThis, pReg, cbElapsed, &cbTransferred);
+                if (   RT_SUCCESS(rc)
+                    && cbTransferred)
                 {
-                    rc = ichac97ReadAudio(pThis, pReg, cbElapsed, &cbTransferred);
-                    if (RT_SUCCESS(rc)
-                        && cbTransferred)
-                    {
-                        Assert(cbElapsed >= cbTransferred);
-                        cbElapsed  -= cbTransferred;
-                        Assert((cbTransferred & 1) == 0);    /* Else the following shift won't work */
-                        pReg->picb -= (cbTransferred >> 1);
-                    }
-                    break;
+                    Assert(cbElapsed >= cbTransferred);
+                    cbElapsed  -= cbTransferred;
+                    Assert((cbTransferred & 1) == 0);    /* Else the following shift won't work */
+                    pReg->picb -= (cbTransferred >> 1);
                 }
+                break;
+            }
 
             default:
@@ -2522,5 +2522,5 @@
          * Register statistics.
          */
-        PDMDevHlpSTAMRegister(pDevIns, &pThis->StatTimer,            STAMTYPE_PROFILE, "/Devices/AC97/Timer",             STAMUNIT_TICKS_PER_CALL, "Profiling hdaTimer.");
+        PDMDevHlpSTAMRegister(pDevIns, &pThis->StatTimer,            STAMTYPE_PROFILE, "/Devices/AC97/Timer",             STAMUNIT_TICKS_PER_CALL, "Profiling ichac97Timer.");
         PDMDevHlpSTAMRegister(pDevIns, &pThis->StatBytesRead,        STAMTYPE_COUNTER, "/Devices/AC97/BytesRead"   ,      STAMUNIT_BYTES,          "Bytes read from AC97 emulation.");
         PDMDevHlpSTAMRegister(pDevIns, &pThis->StatBytesWritten,     STAMTYPE_COUNTER, "/Devices/AC97/BytesWritten",      STAMUNIT_BYTES,          "Bytes written to AC97 emulation.");
