]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/PCD/Dxe/Service.c
Refine comments for PCD PEIM/driver.
[mirror_edk2.git] / MdeModulePkg / Universal / PCD / Dxe / Service.c
index bfc17e734c5b49272a82b881f7df9dd32453ee26..532bb39cc40ae78955a0878f3dfb68cfea9dbd74 100644 (file)
@@ -40,7 +40,7 @@ GetWorker (
 {\r
   UINT32              *LocalTokenNumberTable;\r
   EFI_GUID            *GuidTable;\r
-  UINT16              *StringTable;\r
+  UINT              *StringTable;\r
   EFI_GUID            *Guid;\r
   UINT16              *Name;\r
   VARIABLE_HEAD       *VariableHead;\r
@@ -108,9 +108,9 @@ GetWorker (
   PcdDb = IsPeiDb ? ((UINT8 *) &mPcdDatabase->PeiDb) : ((UINT8 *) &mPcdDatabase->DxeDb);\r
                                     \r
   if (IsPeiDb) {\r
-    StringTable = (UINT16 *) (&mPcdDatabase->PeiDb.Init.StringTable[0]);\r
+    StringTable = (UINT8 *) (&mPcdDatabase->PeiDb.Init.StringTable[0]);\r
   } else {\r
-    StringTable = (UINT16 *) (&mPcdDatabase->DxeDb.Init.StringTable[0]);\r
+    StringTable = (UINT8 *) (&mPcdDatabase->DxeDb.Init.StringTable[0]);\r
   }\r
                                       \r
   \r
@@ -132,7 +132,7 @@ GetWorker (
       VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);\r
       \r
       Guid = GuidTable + VariableHead->GuidTableIndex;\r
-      Name = StringTable + VariableHead->StringIndex;\r
+      Name = (UINT16*)(StringTable + VariableHead->StringIndex);\r
       VaraiableDefaultBuffer = (UINT8 *) PcdDb + VariableHead->DefaultValueOffset;\r
 \r
       Status = GetHiiVariable (Guid, Name, &Data, &DataSize);\r
@@ -161,7 +161,7 @@ GetWorker (
       break;\r
 \r
     case PCD_TYPE_STRING:\r
-      StringTableIdx = (UINT16) *((UINT8 *) PcdDb + Offset);\r
+      StringTableIdx = *(UINT16*)((UINT8 *) PcdDb + Offset);\r
       RetPtr = (VOID *) (StringTable + StringTableIdx);\r
       break;\r
 \r
@@ -694,7 +694,7 @@ SetWorker (
   BOOLEAN             IsPeiDb;\r
   UINT32              LocalTokenNumber;\r
   EFI_GUID            *GuidTable;\r
-  UINT16              *StringTable;\r
+  UINT              *StringTable;\r
   EFI_GUID            *Guid;\r
   UINT16              *Name;\r
   UINTN               VariableOffset;\r
@@ -770,9 +770,9 @@ SetWorker (
   PcdDb = IsPeiDb ? ((UINT8 *) &mPcdDatabase->PeiDb) : ((UINT8 *) &mPcdDatabase->DxeDb);\r
 \r
   if (IsPeiDb) {\r
-    StringTable = (UINT16 *) (&mPcdDatabase->PeiDb.Init.StringTable[0]);\r
+    StringTable = (UINT8 *) (&mPcdDatabase->PeiDb.Init.StringTable[0]);\r
   } else {\r
-    StringTable = (UINT16 *) (&mPcdDatabase->DxeDb.Init.StringTable[0]);\r
+    StringTable = (UINT8 *) (&mPcdDatabase->DxeDb.Init.StringTable[0]);\r
   }\r
 \r
   \r
@@ -810,7 +810,7 @@ SetWorker (
       VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);\r
       \r
       Guid = GuidTable + VariableHead->GuidTableIndex;\r
-      Name = StringTable + VariableHead->StringIndex;\r
+      Name = (UINT16*) (StringTable + VariableHead->StringIndex);\r
       VariableOffset = VariableHead->Offset;\r
 \r
       Status = SetHiiVariable (Guid, Name, Data, *Size, VariableOffset);\r
@@ -975,8 +975,10 @@ SetHiiVariable (
   VOID        *Buffer;\r
   EFI_STATUS  Status;\r
   UINT32      Attribute;\r
+  UINTN       SetSize;\r
 \r
   Size = 0;\r
+  SetSize = 0;\r
 \r
   //\r
   // Try to get original variable size information.\r
@@ -988,14 +990,17 @@ SetHiiVariable (
     &Size,\r
     NULL\r
     );\r
-\r
+  \r
   if (Status == EFI_BUFFER_TOO_SMALL) {\r
     //\r
     // Patch new PCD's value to offset in given HII variable.\r
     //\r
-    \r
-    Buffer = AllocatePool (Size);\r
-\r
+    if  (Size >= (DataSize + Offset)) {\r
+      SetSize = Size;\r
+    } else {\r
+      SetSize = DataSize + Offset;\r
+    }\r
+    Buffer = AllocatePool (SetSize);\r
     ASSERT (Buffer != NULL);\r
 \r
     Status = gRT->GetVariable (\r
@@ -1014,13 +1019,12 @@ SetHiiVariable (
               VariableName,\r
               VariableGuid,\r
               Attribute,\r
-              Size,\r
+              SetSize,\r
               Buffer\r
               );\r
 \r
     FreePool (Buffer);\r
     return Status;\r
-\r
   } else if (Status == EFI_NOT_FOUND) {\r
     //\r
     // If variable does not exist, a new variable need to be created.\r