VirtualBox

Opened 6 years ago

#17767 new defect

hdaR3SaveStream compile bug in non VBOX_STRICT

Reported by: gim Owned by:
Component: audio Version: VirtualBox 5.2.12
Keywords: Cc:
Guest type: all Host type: all

Description

VirtualBox/src/VBox/Devices/Audio/DevHDA.cpp: In function ‘int hdaR3SaveStream(PPDMDEVINS, PSSMHANDLE, PHDASTREAM)’:
VirtualBox/src/VBox/Devices/Audio/DevHDA.cpp:3506:30: error: ‘pThis’ was not declared in this scope
               HDA_STREAM_REG(pThis, LPIB, pStream->u8SD), HDA_STREAM_REG(pThis, CBL, pStream->u8SD), HDA_STREAM_REG(pThis, LVI, pStream->u8SD)));

In this function pThis will be defined only when VBOX_STRICT defined:

/* Saved state workers and callbacks. */

static int hdaR3SaveStream(PPDMDEVINS pDevIns, PSSMHANDLE pSSM, PHDASTREAM pStream)
{
    RT_NOREF(pDevIns);
#ifdef VBOX_STRICT
    PHDASTATE pThis = PDMINS_2_DATA(pDevIns, PHDASTATE);
#endif

...

#ifdef VBOX_STRICT /* Sanity checks. */
    uint64_t u64BaseDMA = RT_MAKE_U64(HDA_STREAM_REG(pThis, BDPL, pStream->u8SD),
                                      HDA_STREAM_REG(pThis, BDPU, pStream->u8SD));
    uint16_t u16LVI     = HDA_STREAM_REG(pThis, LVI, pStream->u8SD);
    uint32_t u32CBL     = HDA_STREAM_REG(pThis, CBL, pStream->u8SD);

    Assert(u64BaseDMA == pStream->u64BDLBase);
    Assert(u16LVI     == pStream->u16LVI);
    Assert(u32CBL     == pStream->u32CBL);
#endif

...

#ifdef VBOX_STRICT /* Sanity checks. */
    PHDABDLE pBDLE = &pStream->State.BDLE;
    if (u64BaseDMA)
    {
        Assert(pStream->State.uCurBDLE <= u16LVI + 1);

        HDABDLE curBDLE;
        rc = hdaR3BDLEFetch(pThis, &curBDLE, u64BaseDMA, pStream->State.uCurBDLE);
        AssertRC(rc);

        Assert(curBDLE.Desc.u32BufSize == pBDLE->Desc.u32BufSize);
        Assert(curBDLE.Desc.u64BufAdr  == pBDLE->Desc.u64BufAdr);
        Assert(curBDLE.Desc.fFlags     == pBDLE->Desc.fFlags);
    }
    else
    {
        Assert(pBDLE->Desc.u64BufAdr  == 0);
        Assert(pBDLE->Desc.u32BufSize == 0);
    }
#endif

...

    Log2Func(("[SD%RU8] LPIB=%RU32, CBL=%RU32, LVI=%RU32\n",
              pStream->u8SD,
              HDA_STREAM_REG(pThis, LPIB, pStream->u8SD), HDA_STREAM_REG(pThis, CBL, pStream->u8SD), HDA_STREAM_REG(pThis, LVI, pStream->u8SD)));

#ifdef LOG_ENABLED
    hdaR3BDLEDumpAll(pThis, pStream->u64BDLBase, pStream->u16LVI + 1);
#endif

    return rc;
}

Attachments (2)

DevHDA.patch (736 bytes ) - added by gim 6 years ago.
DevHDA.2.patch (744 bytes ) - added by gim 6 years ago.

Download all attachments as: .zip

Change History (2)

by gim, 6 years ago

Attachment: DevHDA.patch added

by gim, 6 years ago

Attachment: DevHDA.2.patch added
Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use