VirtualBox

Changeset 75864 in vbox for trunk/src/VBox/Devices/Audio


Ignore:
Timestamp:
Dec 2, 2018 1:03:43 AM (6 years ago)
Author:
vboxsync
Message:

DevHDA: Fix for crash saving circular stream buffers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DevHDA.cpp

    r75802 r75864  
    36313631         * So get the current read offset and serialize the buffer data manually based on that.
    36323632         */
    3633         size_t cbCircBufOffRead = RTCircBufOffsetRead(pStream->State.pCircBuf);
    3634 
     3633        size_t const offBuf = RTCircBufOffsetRead(pStream->State.pCircBuf);
    36353634        void  *pvBuf;
    36363635        size_t cbBuf;
    36373636        RTCircBufAcquireReadBlock(pStream->State.pCircBuf, cbCircBufUsed, &pvBuf, &cbBuf);
     3637#if 0 /** @todo r=bird: The disabled code crashes on me. The #else case contains something that seems
     3638       * to make more sense to me.  I'm not say this is correct code.  Please review, fix, and remove. */
    36383639
    36393640        if (cbBuf)
     
    36423643            size_t cbEnd    = 0;
    36433644
    3644             if (cbCircBufUsed > cbCircBufOffRead)
    3645                 cbEnd = cbCircBufUsed - cbCircBufOffRead;
     3645            if (cbCircBufUsed > offBuf)
     3646                cbEnd = cbCircBufUsed - offBuf;
    36463647
    36473648            if (cbEnd) /* Save end of buffer first. */
     
    36603661            }
    36613662        }
     3663#else
     3664        Assert(cbBuf);
     3665        rc = SSMR3PutMem(pSSM, pvBuf, cbBuf);
     3666        if (cbBuf < cbCircBufUsed)
     3667            rc = SSMR3PutMem(pSSM, (uint8_t *)pvBuf - offBuf, cbCircBufUsed - cbBuf);
     3668#endif
    36623669
    36633670        RTCircBufReleaseReadBlock(pStream->State.pCircBuf, 0 /* Don't advance read pointer -- see comment above */);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette