X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkModulePkg%2FUniversal%2FPCD%2FDxe%2FService.c;h=717a4345ea11df329815b0a25ce96f28163e7a92;hp=9513143f26a15398a4b06dceaea8aff9d8da37c3;hb=bb5545b663e1d8ac4fd37003d5ba26fafdad5831;hpb=58f1099f3dd6d1d7606cc57046e59488d4cbf023 diff --git a/EdkModulePkg/Universal/PCD/Dxe/Service.c b/EdkModulePkg/Universal/PCD/Dxe/Service.c index 9513143f26..717a4345ea 100644 --- a/EdkModulePkg/Universal/PCD/Dxe/Service.c +++ b/EdkModulePkg/Universal/PCD/Dxe/Service.c @@ -263,7 +263,7 @@ ExGetNextTokeNumber ( if (TokenNumber == PCD_INVALID_TOKEN_NUMBER) { return ExMapTable[Idx].ExTokenNumber; } - + for ( ; Idx < SizeOfExMapTable; Idx++) { if (ExMapTable[Idx].ExTokenNumber == TokenNumber) { Idx++; @@ -742,19 +742,23 @@ GetExPcdTokenNumber ( EFI_GUID *MatchGuid; UINTN MatchGuidIdx; - ExMap = mPcdDatabase->PeiDb.Init.ExMapTable; - GuidTable = mPcdDatabase->PeiDb.Init.GuidTable; - - MatchGuid = ScanGuid (GuidTable, sizeof(mPcdDatabase->PeiDb.Init.GuidTable), Guid); - ASSERT (MatchGuid != NULL); + if (!PEI_DATABASE_EMPTY) { + ExMap = mPcdDatabase->PeiDb.Init.ExMapTable; + GuidTable = mPcdDatabase->PeiDb.Init.GuidTable; + + MatchGuid = ScanGuid (GuidTable, sizeof(mPcdDatabase->PeiDb.Init.GuidTable), Guid); + + if (MatchGuid != NULL) { - MatchGuidIdx = MatchGuid - GuidTable; - - for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) { - if ((ExTokenNumber == ExMap[i].ExTokenNumber) && - (MatchGuidIdx == ExMap[i].ExGuidIndex)) { - return ExMap[i].LocalTokenNumber; + MatchGuidIdx = MatchGuid - GuidTable; + + for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) { + if ((ExTokenNumber == ExMap[i].ExTokenNumber) && + (MatchGuidIdx == ExMap[i].ExGuidIndex)) { + return ExMap[i].LocalTokenNumber; + } + } } } @@ -762,6 +766,10 @@ GetExPcdTokenNumber ( GuidTable = mPcdDatabase->DxeDb.Init.GuidTable; MatchGuid = ScanGuid (GuidTable, sizeof(mPcdDatabase->DxeDb.Init.GuidTable), Guid); + // + // We need to ASSERT here. If GUID can't be found in GuidTable, this is a + // error in the BUILD system. + // ASSERT (MatchGuid != NULL); MatchGuidIdx = MatchGuid - GuidTable; @@ -769,7 +777,7 @@ GetExPcdTokenNumber ( for (i = 0; i < DXE_EXMAPPING_TABLE_SIZE; i++) { if ((ExTokenNumber == ExMap[i].ExTokenNumber) && (MatchGuidIdx == ExMap[i].ExGuidIndex)) { - return ExMap[i].LocalTokenNumber + PEI_LOCAL_TOKEN_NUMBER; + return ExMap[i].LocalTokenNumber; } }