VirtualBox

Ignore:
Timestamp:
Jul 12, 2018 9:06:33 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123672
Message:

*: Made RT_UOFFSETOF, RT_OFFSETOF, RT_UOFFSETOF_ADD and RT_OFFSETOF_ADD work like builtin_offsetof() and require compile time resolvable requests, adding RT_UOFFSETOF_DYN for the dynamic questions that can only be answered at runtime.

File:
1 edited

Legend:

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

    r72584 r73097  
    824824     */
    825825    PRTFSFATCLUSTERMAPCACHE pFatCache;
    826     pThis->pFatCache = pFatCache = (PRTFSFATCLUSTERMAPCACHE)RTMemAllocZ(RT_OFFSETOF(RTFSFATCLUSTERMAPCACHE, aEntries[cEntries]));
     826    pFatCache = (PRTFSFATCLUSTERMAPCACHE)RTMemAllocZ(RT_UOFFSETOF_DYN(RTFSFATCLUSTERMAPCACHE, aEntries[cEntries]));
     827    pThis->pFatCache = pFatCache;
    827828    if (!pFatCache)
    828829        return RTErrInfoSet(pErrInfo, VERR_NO_MEMORY, "Failed to allocate FAT cache");
     
    25712572    { /* ObjSet */
    25722573        RTVFSOBJSETOPS_VERSION,
    2573         RT_OFFSETOF(RTVFSFILEOPS, Stream.Obj) - RT_OFFSETOF(RTVFSFILEOPS, ObjSet),
     2574        RT_UOFFSETOF(RTVFSFILEOPS, ObjSet) - RT_UOFFSETOF(RTVFSFILEOPS, Stream.Obj),
    25742575        rtFsFatFile_SetMode,
    25752576        rtFsFatFile_SetTimes,
     
    44124413    if (pThis->offDir < 2)
    44134414    {
    4414         size_t cbNeeded = RT_OFFSETOF(RTDIRENTRYEX, szName[pThis->offDir + 2]);
     4415        size_t cbNeeded = RT_UOFFSETOF_DYN(RTDIRENTRYEX, szName[pThis->offDir + 2]);
    44154416        if (cbNeeded < *pcbDirEntry)
    44164417            *pcbDirEntry = cbNeeded;
     
    45544555                if (!fLongName)
    45554556                    cchName = rtFsFatDir_CalcUtf8LengthForDirEntry(pShared, &paEntries[iEntry].Entry);
    4556                 size_t cbNeeded = RT_OFFSETOF(RTDIRENTRYEX, szName[cchName + 1]);
     4557                size_t cbNeeded = RT_UOFFSETOF_DYN(RTDIRENTRYEX, szName[cchName + 1]);
    45574558                if (cbNeeded <= *pcbDirEntry)
    45584559                    *pcbDirEntry = cbNeeded;
     
    46264627    { /* ObjSet */
    46274628        RTVFSOBJSETOPS_VERSION,
    4628         RT_OFFSETOF(RTVFSDIROPS, Obj) - RT_OFFSETOF(RTVFSDIROPS, ObjSet),
     4629        RT_UOFFSETOF(RTVFSDIROPS, ObjSet) - RT_UOFFSETOF(RTVFSDIROPS, Obj),
    46294630        rtFsFatDir_SetMode,
    46304631        rtFsFatDir_SetTimes,
     
    50315032    Assert(offFirstZero >= RT_UOFFSETOF(FATBOOTSECTOR, Bpb));
    50325033    uint32_t const cbZeroPad    = RT_MIN(offJump - offFirstZero,
    5033                                          sizeof(pBootSector->Bpb.Bpb20) - (offFirstZero - RT_OFFSETOF(FATBOOTSECTOR, Bpb)));
     5034                                         sizeof(pBootSector->Bpb.Bpb20) - (offFirstZero - RT_UOFFSETOF(FATBOOTSECTOR, Bpb)));
    50345035
    50355036    if (!ASMMemIsAllU8((uint8_t const *)pBootSector + offFirstZero, cbZeroPad, 0))
     
    53875388             && pBootSector->abJmp[2] <= 0x7f)
    53885389        offJmp = RT_MIN(127, RT_MAKE_U16(pBootSector->abJmp[1], pBootSector->abJmp[2]));
    5389     uint8_t const cbMaxBpb = offJmp - RT_OFFSETOF(FATBOOTSECTOR, Bpb);
     5390    uint8_t const cbMaxBpb = offJmp - RT_UOFFSETOF(FATBOOTSECTOR, Bpb);
    53905391
    53915392    /*
     
    54445445    if (   (   sizeof(FAT32EBPB) <= cbMaxBpb
    54455446            && pBootSector->Bpb.Fat32Ebpb.bExtSignature == FATEBPB_SIGNATURE)
    5446         || (   RT_OFFSETOF(FAT32EBPB, achLabel) <= cbMaxBpb
     5447        || (   RT_UOFFSETOF(FAT32EBPB, achLabel) <= cbMaxBpb
    54475448            && pBootSector->Bpb.Fat32Ebpb.bExtSignature == FATEBPB_SIGNATURE_OLD) )
    54485449    {
     
    54605461        if (   (   sizeof(FATEBPB) <= cbMaxBpb
    54615462                && pBootSector->Bpb.Ebpb.bExtSignature == FATEBPB_SIGNATURE)
    5462             || (   RT_OFFSETOF(FATEBPB, achLabel) <= cbMaxBpb
     5463            || (   RT_UOFFSETOF(FATEBPB, achLabel) <= cbMaxBpb
    54635464                && pBootSector->Bpb.Ebpb.bExtSignature == FATEBPB_SIGNATURE_OLD) )
    54645465        {
Note: See TracChangeset for help on using the changeset viewer.

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