mirror of https://github.com/acidanthera/audk.git
BaseTools: Convert "Unicode string" to "byte array" if value type diff
V2: Fixed 3 typo. Use startswith(('L"',"L'")) to check if a string is Unicode string. Use a set PcdValueTypeSet instead of a list PcdValueTypeList to save memory. V1: For the same one VOID* pcd, if the default value type of one SKU is "Unicode string", the other SKUs are "OtherVOID*"(ASCII string or byte array),Then convert "Unicode string" to "byte array". Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: ZhiqiangX Zhao <zhiqiangx.zhao@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Cc: Bob Feng <bob.c.feng@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
This commit is contained in:
parent
32be12235d
commit
073891a3e7
|
@ -2878,6 +2878,15 @@ class DscBuildData(PlatformBuildClassObject):
|
||||||
elif TAB_DEFAULT in pcd.SkuInfoList and TAB_COMMON in pcd.SkuInfoList:
|
elif TAB_DEFAULT in pcd.SkuInfoList and TAB_COMMON in pcd.SkuInfoList:
|
||||||
del pcd.SkuInfoList[TAB_COMMON]
|
del pcd.SkuInfoList[TAB_COMMON]
|
||||||
|
|
||||||
|
#For the same one VOID* pcd, if the default value type of one SKU is "Unicode string",
|
||||||
|
#the other SKUs are "OtherVOID*"(ASCII string or byte array),Then convert "Unicode string" to "byte array".
|
||||||
|
for pcd in Pcds.values():
|
||||||
|
PcdValueTypeSet = set()
|
||||||
|
for sku in pcd.SkuInfoList.values():
|
||||||
|
PcdValueTypeSet.add("UnicodeString" if sku.DefaultValue.startswith(('L"',"L'")) else "OtherVOID*")
|
||||||
|
if len(PcdValueTypeSet) > 1:
|
||||||
|
for sku in pcd.SkuInfoList.values():
|
||||||
|
sku.DefaultValue = StringToArray(sku.DefaultValue) if sku.DefaultValue.startswith(('L"',"L'")) else sku.DefaultValue
|
||||||
|
|
||||||
map(self.FilterSkuSettings, Pcds.values())
|
map(self.FilterSkuSettings, Pcds.values())
|
||||||
return Pcds
|
return Pcds
|
||||||
|
|
Loading…
Reference in New Issue