]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Only generate the random GUID if a package list already exist in the database.
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 16 Sep 2008 07:56:40 +0000 (07:56 +0000)
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 16 Sep 2008 07:56:40 +0000 (07:56 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5902 6f19259b-4bc3-4df7-8a09-765794883524

EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/Package.c

index d84eadeb93971926dbdc40ed13454534468c56d8..5f2aa18b845feec3b8fbfa59c399ed747d9ef1da 100644 (file)
@@ -307,13 +307,6 @@ UefiRegisterPackageList(
     CopyGuid (&ThunkContext->TagGuid, Packages->GuidId);\r
   }\r
 \r
-  //\r
-  // UEFI HII database does not allow two package list with the same GUID.\r
-  // In Framework HII implementation, Packages->GuidId is used as an identifier to associate \r
-  // a PackageList with only IFR to a Package list the with String package.\r
-  //\r
-  GenerateRandomGuid (&GuidId);\r
-\r
   //\r
   // UEFI HII require EFI_HII_CONFIG_ACCESS_PROTOCOL to be installed on a EFI_HANDLE, so\r
   // that Setup Utility can load the Buffer Storage using this protocol.\r
@@ -321,13 +314,31 @@ UefiRegisterPackageList(
   if (IfrPackageCount != 0) {\r
     InstallDefaultConfigAccessProtocol (Packages, ThunkContext);\r
   }\r
-  PackageListHeader = PrepareUefiPackageListFromFrameworkHiiPackages (Packages, &GuidId);\r
+  PackageListHeader = PrepareUefiPackageListFromFrameworkHiiPackages (Packages, &ThunkContext->TagGuid);\r
   Status = mHiiDatabase->NewPackageList (\r
               mHiiDatabase,\r
               PackageListHeader,  \r
               ThunkContext->UefiHiiDriverHandle,\r
               &ThunkContext->UefiHiiHandle\r
               );\r
+  if (Status == EFI_INVALID_PARAMETER) {\r
+    SafeFreePool (PackageListHeader);\r
+    \r
+    //\r
+    // UEFI HII database does not allow two package list with the same GUID.\r
+    // In Framework HII implementation, Packages->GuidId is used as an identifier to associate \r
+    // a PackageList with only IFR to a Package list the with String package.\r
+    //\r
+    GenerateRandomGuid (&GuidId);\r
+\r
+    PackageListHeader = PrepareUefiPackageListFromFrameworkHiiPackages (Packages, &GuidId);\r
+    Status = mHiiDatabase->NewPackageList (\r
+                mHiiDatabase,\r
+                PackageListHeader,  \r
+                ThunkContext->UefiHiiDriverHandle,\r
+                &ThunkContext->UefiHiiHandle\r
+                );\r
+  }\r
 \r
   //\r
   // BUGBUG: Remove when development is done\r