]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: Fix one crash bug in the report for Fixed structure Pcd
authorYonghong Zhu <yonghong.zhu@intel.com>
Thu, 18 Oct 2018 14:12:20 +0000 (22:12 +0800)
committerYonghong Zhu <yonghong.zhu@intel.com>
Sun, 21 Oct 2018 12:10:21 +0000 (20:10 +0800)
The case is:
in the DSC file:
SKUID_IDENTIFIER               = ALL

[SkuIds]
  0|DEFAULT
  1|A

[PcdsFixedAtBuild.common.A]
  TokenSpaceGuid.Test401|{0x0F, 0x12}
  TokenSpaceGuid.Test401.TEST401INT8ARRAY[0]|'B'

in the build report, Data = OverrideValues[Keys[0]], but the Keys[0]
is the keyword "DEFAULT", and in this case the "DEFAULT" SKU doesn't
save any value, then it cause the Data is empty, in the next code
when we use the code it cause crash.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
BaseTools/Source/Python/build/BuildReport.py

index 14143b3396c05e1cba888db05dccf5766d51bb77..a66adfb16746b80ff6173be3f955c4116e86cd98 100644 (file)
@@ -1091,10 +1091,11 @@ class PcdReport(object):
                                 if not Pcd.SkuInfoList:\r
                                     OverrideValues = Pcd.SkuOverrideValues\r
                                     if OverrideValues:\r
-                                        Keys = list(OverrideValues.keys())\r
-                                        Data = OverrideValues[Keys[0]]\r
-                                        Struct = list(Data.values())\r
-                                        DscOverride = self.ParseStruct(Struct[0])\r
+                                        for Data in OverrideValues.values():\r
+                                            Struct = list(Data.values())\r
+                                            if Struct:\r
+                                                DscOverride = self.ParseStruct(Struct[0])\r
+                                                break\r
                                 else:\r
                                     SkuList = sorted(Pcd.SkuInfoList.keys())\r
                                     for Sku in SkuList:\r
@@ -1267,12 +1268,12 @@ class PcdReport(object):
             if IsStructure:\r
                 OverrideValues = Pcd.SkuOverrideValues\r
                 if OverrideValues:\r
-                    Keys = list(OverrideValues.keys())\r
-                    Data = OverrideValues[Keys[0]]\r
-                    Struct = list(Data.values())\r
-                    if Struct:\r
-                        OverrideFieldStruct = self.OverrideFieldValue(Pcd, Struct[0])\r
-                        self.PrintStructureInfo(File, OverrideFieldStruct)\r
+                    for Data in OverrideValues.values():\r
+                        Struct = list(Data.values())\r
+                        if Struct:\r
+                            OverrideFieldStruct = self.OverrideFieldValue(Pcd, Struct[0])\r
+                            self.PrintStructureInfo(File, OverrideFieldStruct)\r
+                            break\r
             self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)\r
         else:\r
             FirstPrint = True\r