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....@intel.com>
---
 BaseTools/Source/Python/build/BuildReport.py | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/BaseTools/Source/Python/build/BuildReport.py 
b/BaseTools/Source/Python/build/BuildReport.py
index 14143b3..5e2a664 100644
--- a/BaseTools/Source/Python/build/BuildReport.py
+++ b/BaseTools/Source/Python/build/BuildReport.py
@@ -1089,14 +1089,16 @@ class PcdReport(object):
                                 DscOverride = False
                             else:
                                 if not Pcd.SkuInfoList:
                                     OverrideValues = Pcd.SkuOverrideValues
                                     if OverrideValues:
-                                        Keys = list(OverrideValues.keys())
-                                        Data = OverrideValues[Keys[0]]
-                                        Struct = list(Data.values())
-                                        DscOverride = 
self.ParseStruct(Struct[0])
+                                        for key in OverrideValues.keys():
+                                            Data = OverrideValues[key]
+                                            Struct = list(Data.values())
+                                            if Struct:
+                                                DscOverride = 
self.ParseStruct(Struct[0])
+                                                break
                                 else:
                                     SkuList = sorted(Pcd.SkuInfoList.keys())
                                     for Sku in SkuList:
                                         SkuInfo = Pcd.SkuInfoList[Sku]
                                         if TypeName in ('DYNHII', 'DEXHII'):
@@ -1265,16 +1267,17 @@ class PcdReport(object):
                         Value = "0x{:X} ({})".format(int(Value, 0), Value)
                 FileWrite(File, ' %-*s   : %6s %10s = %s' % (self.MaxLen, Flag 
+ ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', Value))
             if IsStructure:
                 OverrideValues = Pcd.SkuOverrideValues
                 if OverrideValues:
-                    Keys = list(OverrideValues.keys())
-                    Data = OverrideValues[Keys[0]]
-                    Struct = list(Data.values())
-                    if Struct:
-                        OverrideFieldStruct = self.OverrideFieldValue(Pcd, 
Struct[0])
-                        self.PrintStructureInfo(File, OverrideFieldStruct)
+                    for key in OverrideValues.keys():
+                        Data = OverrideValues[key]
+                        Struct = list(Data.values())
+                        if Struct:
+                            OverrideFieldStruct = self.OverrideFieldValue(Pcd, 
Struct[0])
+                            self.PrintStructureInfo(File, OverrideFieldStruct)
+                            break
             self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, 
DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)
         else:
             FirstPrint = True
             SkuList = sorted(Pcd.SkuInfoList.keys())
             for Sku in SkuList:
-- 
2.6.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to