VirtualBox

忽略:
時間撮記:
2013-4-9 下午02:15:16 (12 年 以前)
作者:
vboxsync
訊息:

ntBldSymDb.cpp: Fixes.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Runtime/r0drv/nt/ntBldSymDb.cpp

    r45423 r45438  
    382382    RTListForEach(&g_SetList, pInsertBefore, MYSET, ListEntry)
    383383    {
    384         if (rtNtOsVerInfoCompare(&pSet->OsVerInfo, &pInsertBefore->OsVerInfo) >= 0)
    385             break;
    386     }
    387     RTListPrepend(&pInsertBefore->ListEntry, &pSet->ListEntry);
    388 
     384        int iDiff = rtNtOsVerInfoCompare(&pInsertBefore->OsVerInfo, &pSet->OsVerInfo);
     385        if (iDiff >= 0)
     386        {
     387            if (iDiff > 0 || pInsertBefore->enmArch > pSet->enmArch)
     388            {
     389                RTListPrepend(&pInsertBefore->ListEntry, &pSet->ListEntry);
     390                return RTEXITCODE_SUCCESS;
     391            }
     392        }
     393    }
     394
     395    RTListAppend(&g_SetList, &pSet->ListEntry);
    389396    return RTEXITCODE_SUCCESS;
    390397}
     
    765772        };
    766773
    767         const char *pszComp = u.Split.apszComps[i];
    768         uint32_t j = RT_ELEMENTS(s_aSymPacks);
    769         while (j-- > 0)
    770             if (!RTStrNICmp(pszComp, s_aSymPacks[i].pszPrefix, s_aSymPacks[i].cchPrefix))
     774        const char *pszComp  = u.Split.apszComps[i];
     775        uint32_t    iSymPack = RT_ELEMENTS(s_aSymPacks);
     776        while (iSymPack-- > 0)
     777            if (!RTStrNICmp(pszComp, s_aSymPacks[iSymPack].pszPrefix, s_aSymPacks[iSymPack].cchPrefix))
    771778                break;
    772         if (j >= RT_ELEMENTS(s_aSymPacks))
     779        if (iSymPack >= RT_ELEMENTS(s_aSymPacks))
    773780            continue;
    774781
    775         pVerInfo->uMajorVer = s_aSymPacks[j].uMajorVer;
    776         pVerInfo->uMinorVer = s_aSymPacks[j].uMinorVer;
    777         pVerInfo->uCsdNo    = s_aSymPacks[j].uCsdNo;
     782        pVerInfo->uMajorVer = s_aSymPacks[iSymPack].uMajorVer;
     783        pVerInfo->uMinorVer = s_aSymPacks[iSymPack].uMinorVer;
     784        pVerInfo->uCsdNo    = s_aSymPacks[iSymPack].uCsdNo;
    778785        pVerInfo->fChecked  = false;
    779         pVerInfo->uBuildNo  = s_aSymPacks[j].uBuildNo;
     786        pVerInfo->uBuildNo  = s_aSymPacks[iSymPack].uBuildNo;
    780787
    781788        /* Parse build number if necessary. */
    782         if (s_aSymPacks[j].uBuildNo == UINT32_MAX)
     789        if (s_aSymPacks[iSymPack].uBuildNo == UINT32_MAX)
    783790        {
    784791            char *pszNext;
    785             rc = RTStrToUInt32Ex(pszComp + s_aSymPacks[j].cchPrefix, &pszNext, 10, &pVerInfo->uBuildNo);
     792            rc = RTStrToUInt32Ex(pszComp + s_aSymPacks[iSymPack].cchPrefix, &pszNext, 10, &pVerInfo->uBuildNo);
    786793            if (RT_FAILURE(rc))
    787794                return RTMsgErrorExit(RTEXITCODE_FAILURE, "Failed to decode build number in '%s': %Rrc", pszComp, rc);
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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