]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/ExtendedIfrSupportLib/Form.c
Sync in bug fix from EDK I:
[mirror_edk2.git] / MdeModulePkg / Library / ExtendedIfrSupportLib / Form.c
index d37821963cad716d5b2266f502783308b30e6b11..a973d8f2dc2db4a4a9f2ed294aec9335000fa32a 100644 (file)
@@ -274,6 +274,58 @@ Fail:
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  This function initialize the data structure for dynamic opcode.\r
+\r
+  @param UpdateData     The adding data;\r
+  @param BufferSize     Length of the buffer to fill dynamic opcodes.\r
+\r
+  @retval EFI_SUCCESS           Update data is initialized.\r
+  @retval EFI_INVALID_PARAMETER UpdateData is NULL.\r
+  @retval EFI_OUT_OF_RESOURCES  No enough memory to allocate.\r
+\r
+**/\r
+EFI_STATUS\r
+IfrLibInitUpdateData (\r
+  IN OUT EFI_HII_UPDATE_DATA   *UpdateData,\r
+  IN UINT32                    BufferSize\r
+  )\r
+{\r
+  ASSERT (UpdateData != NULL);\r
+\r
+  UpdateData->BufferSize = BufferSize;\r
+  UpdateData->Offset = 0;\r
+  UpdateData->Data = AllocatePool (BufferSize);\r
+\r
+  return (UpdateData->Data != NULL) ? EFI_SUCCESS : EFI_OUT_OF_RESOURCES;\r
+}\r
+\r
+/**\r
+\r
+  This function free the resource of update data.\r
+\r
+  @param UpdateData      The adding data;\r
+\r
+  @retval EFI_SUCCESS            Resource in UpdateData is released.\r
+  @retval EFI_INVALID_PARAMETER  UpdateData is NULL.\r
+\r
+**/\r
+EFI_STATUS\r
+IfrLibFreeUpdateData (\r
+  IN EFI_HII_UPDATE_DATA       *UpdateData\r
+  )\r
+{\r
+  EFI_STATUS  Status;\r
+\r
+  if (UpdateData == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+\r
+  Status = gBS->FreePool (UpdateData->Data);\r
+  UpdateData->Data = NULL;\r
+\r
+  return Status;\r
+}\r
 \r
 /**\r
   This function allows the caller to update a form that has\r
@@ -364,7 +416,7 @@ IfrLibUpdateForm (
     Status = GetPackageDataFromPackageList (HiiPackageList, Index, &PackageLength, &Package);\r
     if (Status == EFI_SUCCESS) {\r
       CopyMem (&PackageHeader, Package, sizeof (EFI_HII_PACKAGE_HEADER));\r
-      if ((PackageHeader.Type == EFI_HII_PACKAGE_FORM) && !Updated) {\r
+      if ((PackageHeader.Type == EFI_HII_PACKAGE_FORMS) && !Updated) {\r
         Status = UpdateFormPackageData (FormSetGuid, FormId, Package, PackageLength, Label, Insert, Data, (UINT8 **)&TempBuffer, &TempBufferSize);\r
         if (!EFI_ERROR(Status)) {\r
           if (FormSetGuid == NULL) {\r