Reviewed-by: Jaben Carsey <jaben.car...@intel.com> Note that you could change your first 2 lines (of the new content in both places) to: for Data in OverrideValues.values():
since you don't ever use the key later on... -Jaben > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Yonghong Zhu > Sent: Thursday, October 18, 2018 7:25 AM > To: edk2-devel@lists.01.org > Subject: [edk2] [Patch] BaseTools: Fix one crash bug in the report for Fixed > structure Pcd > > 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 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel