VirtualBox

Ignore:
Timestamp:
Jan 29, 2024 3:44:44 PM (10 months ago)
Author:
vboxsync
Message:

IPRT/fatvfs.cpp: Simplied r166121/r158845.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/fs/fatvfs.cpp

    r103005 r103108  
    926926    uint64_t off     = UINT64_MAX;
    927927    uint64_t offEdge = UINT64_MAX;
    928     RTSGSEG  aSgSegs[8];
    929     RT_ZERO(aSgSegs); /* Initialization required for GCC >= 11. */
    930     RTSGBUF  SgBuf;
    931     RTSgBufInit(&SgBuf, aSgSegs, RT_ELEMENTS(aSgSegs));
    932     SgBuf.cSegs = 0; /** @todo RTSgBuf API is stupid, make it smarter. */
     928    unsigned cSegs   = 0;
     929    RTSGSEG  aSgSegs[8] /* Initialization required for GCC >= 11. */
     930        = { { NULL, 0 }, { NULL, 0 }, { NULL, 0 }, { NULL, 0 },  { NULL, 0 }, { NULL, 0 }, { NULL, 0 }, { NULL, 0 }, };
    933931
    934932    for (uint32_t iFatCopy = 0; iFatCopy < pThis->cFats; iFatCopy++)
     
    955953                            && offEntry)
    956954                        {
    957                             Assert(SgBuf.cSegs > 0);
    958                             Assert(   (uintptr_t)aSgSegs[SgBuf.cSegs - 1].pvSeg + aSgSegs[SgBuf.cSegs - 1].cbSeg
     955                            Assert(cSegs > 0);
     956                            Assert(   (uintptr_t)aSgSegs[cSegs - 1].pvSeg + aSgSegs[cSegs - 1].cbSeg
    959957                                   == (uintptr_t)&pFatCache->aEntries[iEntry].pbData[offEntry]);
    960                             aSgSegs[SgBuf.cSegs - 1].cbSeg += pFatCache->cbDirtyLine;
     958                            aSgSegs[cSegs - 1].cbSeg += pFatCache->cbDirtyLine;
    961959                            offEdge += pFatCache->cbDirtyLine;
    962960                        }
     
    967965                            {
    968966                                off = offDirtyLine;
    969                                 Assert(SgBuf.cSegs == 0);
     967                                Assert(cSegs == 0);
    970968                            }
    971969                            /* flush if not adjacent or if we're out of segments. */
    972970                            else if (   offDirtyLine != offEdge
    973                                      || SgBuf.cSegs >= RT_ELEMENTS(aSgSegs))
     971                                     || cSegs >= RT_ELEMENTS(aSgSegs))
    974972                            {
    975                                 RTSgBufReset(&SgBuf);
     973                                RTSGBUF SgBuf;
     974                                RTSgBufInit(&SgBuf, aSgSegs, cSegs);
    976975                                int rc2 = RTVfsFileSgWrite(pThis->hVfsBacking, off, &SgBuf, true /*fBlocking*/, NULL);
    977976                                if (RT_FAILURE(rc2) && RT_SUCCESS(rc))
    978977                                    rc = rc2;
    979                                 SgBuf.cSegs = 0;
    980                                 off = offDirtyLine;
     978                                cSegs = 0;
     979                                off   = offDirtyLine;
    981980                            }
    982981
    983982                            /* Append segment. */
    984                             aSgSegs[SgBuf.cSegs].cbSeg = pFatCache->cbDirtyLine;
    985                             aSgSegs[SgBuf.cSegs].pvSeg = &pFatCache->aEntries[iEntry].pbData[offEntry];
    986                             SgBuf.cSegs++;
     983                            aSgSegs[cSegs].cbSeg = pFatCache->cbDirtyLine;
     984                            aSgSegs[cSegs].pvSeg = &pFatCache->aEntries[iEntry].pbData[offEntry];
     985                            cSegs++;
    987986                            offEdge = offDirtyLine + pFatCache->cbDirtyLine;
    988987                        }
     
    10031002     * Final flush job.
    10041003     */
    1005     if (SgBuf.cSegs > 0)
    1006     {
    1007         RTSgBufReset(&SgBuf);
     1004    if (cSegs > 0)
     1005    {
     1006        RTSGBUF SgBuf;
     1007        RTSgBufInit(&SgBuf, aSgSegs, cSegs);
    10081008        int rc2 = RTVfsFileSgWrite(pThis->hVfsBacking, off, &SgBuf, true /*fBlocking*/, NULL);
    10091009        if (RT_FAILURE(rc2) && RT_SUCCESS(rc))
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