diff options
-rw-r--r-- | MdeModulePkg/Universal/PCD/Dxe/Service.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/MdeModulePkg/Universal/PCD/Dxe/Service.c b/MdeModulePkg/Universal/PCD/Dxe/Service.c index c08ac54b61..64bbe4c799 100644 --- a/MdeModulePkg/Universal/PCD/Dxe/Service.c +++ b/MdeModulePkg/Universal/PCD/Dxe/Service.c @@ -106,8 +106,13 @@ GetWorker ( }
PcdDb = IsPeiDb ? ((UINT8 *) &mPcdDatabase->PeiDb) : ((UINT8 *) &mPcdDatabase->DxeDb);
- StringTable = (UINT16 *) (IsPeiDb ? mPcdDatabase->PeiDb.Init.StringTable :
- mPcdDatabase->DxeDb.Init.StringTable);
+
+ if (IsPeiDb) {
+ StringTable = (UINT16 *) (&mPcdDatabase->PeiDb.Init.StringTable[0]);
+ } else {
+ StringTable = (UINT16 *) (&mPcdDatabase->DxeDb.Init.StringTable[0]);
+ }
+
Offset = LocalTokenNumber & PCD_DATABASE_OFFSET_MASK;
@@ -118,8 +123,11 @@ GetWorker ( break;
case PCD_TYPE_HII:
- GuidTable = (EFI_GUID *) (IsPeiDb ? mPcdDatabase->PeiDb.Init.GuidTable :
- mPcdDatabase->DxeDb.Init.GuidTable);
+ if (IsPeiDb) {
+ GuidTable = (EFI_GUID *) (&mPcdDatabase->PeiDb.Init.GuidTable[0]);
+ } else {
+ GuidTable = (EFI_GUID *) (&mPcdDatabase->DxeDb.Init.GuidTable[0]);
+ }
VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);
@@ -761,8 +769,12 @@ SetWorker ( PcdDb = IsPeiDb ? ((UINT8 *) &mPcdDatabase->PeiDb) : ((UINT8 *) &mPcdDatabase->DxeDb);
- StringTable = (UINT16*) (IsPeiDb ? mPcdDatabase->PeiDb.Init.StringTable :
- mPcdDatabase->DxeDb.Init.StringTable);
+ if (IsPeiDb) {
+ StringTable = (UINT16 *) (&mPcdDatabase->PeiDb.Init.StringTable[0]);
+ } else {
+ StringTable = (UINT16 *) (&mPcdDatabase->DxeDb.Init.StringTable[0]);
+ }
+
InternalData = PcdDb + Offset;
@@ -789,8 +801,11 @@ SetWorker ( }
}
- GuidTable = (EFI_GUID *)(IsPeiDb ? mPcdDatabase->PeiDb.Init.GuidTable :
- mPcdDatabase->DxeDb.Init.GuidTable);
+ if (IsPeiDb) {
+ GuidTable = (EFI_GUID *) (&mPcdDatabase->PeiDb.Init.GuidTable[0]);
+ } else {
+ GuidTable = (EFI_GUID *) (&mPcdDatabase->DxeDb.Init.GuidTable[0]);
+ }
VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);
|