]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/PCD/Dxe/Service.c
MdeModulePkg Pcd(DXE): Use correct TokenNumber to call GetPtrTypeSize () when SKU...
[mirror_edk2.git] / MdeModulePkg / Universal / PCD / Dxe / Service.c
index 43a3bda7760d45ecc165da430164a5d63321f24f..3a41bf531689d0e94fb4e99f803fe7374edfd502 100644 (file)
@@ -50,6 +50,7 @@ GetLocalTokenNumber (
   IN UINTN              TokenNumber\r
   )\r
 {\r
+  UINTN                 TmpTokenNumber;\r
   UINT32                *LocalTokenNumberTable;\r
   UINT32                LocalTokenNumber;\r
   UINTN                 Size;\r
@@ -62,6 +63,11 @@ GetLocalTokenNumber (
   //\r
   TokenNumber--;\r
 \r
+  //\r
+  // Backup the TokenNumber passed in as GetPtrTypeSize need the original TokenNumber\r
+  // \r
+  TmpTokenNumber = TokenNumber;\r
+\r
   LocalTokenNumberTable  = IsPeiDb ? (UINT32 *)((UINT8 *)mPcdDatabase.PeiDb + mPcdDatabase.PeiDb->LocalTokenNumberTableOffset) : \r
                                      (UINT32 *)((UINT8 *)mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->LocalTokenNumberTableOffset);\r
   TokenNumber            = IsPeiDb ? TokenNumber : TokenNumber - mPeiLocalTokenCount;\r
@@ -72,7 +78,7 @@ GetLocalTokenNumber (
 \r
   if ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == PCD_TYPE_SKU_ENABLED) {\r
     if (Size == 0) {\r
-      GetPtrTypeSize (TokenNumber, &MaxSize);\r
+      GetPtrTypeSize (TmpTokenNumber, &MaxSize);\r
     } else {\r
       MaxSize = Size;\r
     }\r
@@ -98,7 +104,7 @@ GetPcdType (
     case PCD_DATUM_TYPE_POINTER:\r
       return EFI_PCD_TYPE_PTR;\r
     case PCD_DATUM_TYPE_UINT8:\r
-      if (LocalTokenNumber & PCD_DATUM_TYPE_UINT8_BOOLEAN) {\r
+      if ((LocalTokenNumber & PCD_DATUM_TYPE_UINT8_BOOLEAN) == PCD_DATUM_TYPE_UINT8_BOOLEAN) {\r
         return EFI_PCD_TYPE_BOOL;\r
       } else {\r
         return EFI_PCD_TYPE_8;\r
@@ -169,6 +175,7 @@ GetPcdName (
     // Need to get the full PCD name.\r
     //\r
     Name = AllocateZeroPool (AsciiStrSize (TokenSpaceName) + AsciiStrSize (PcdName));\r
+    ASSERT (Name != NULL);\r
     //\r
     // Catenate TokenSpaceCName and PcdCName with a '.' to form the full PCD name.\r
     //\r
@@ -283,10 +290,6 @@ DxeGetPcdInfo (
   UINT32                LocalTokenNumber;\r
   BOOLEAN               IsPeiDb;\r
 \r
-  if (!FeaturePcdGet (PcdPcdInfoGeneration)) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
   ASSERT (PcdInfo != NULL);\r
 \r
   Status = EFI_NOT_FOUND;\r