Base on the value type to get the value for default opcode.
Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14006 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -2664,7 +2664,7 @@ HiiCreateDefaultOpCode (
|
|||||||
OpCode.DefaultId = DefaultId;
|
OpCode.DefaultId = DefaultId;
|
||||||
CopyMem (&OpCode.Value, &Value, mHiiDefaultTypeToWidth[Type]);
|
CopyMem (&OpCode.Value, &Value, mHiiDefaultTypeToWidth[Type]);
|
||||||
|
|
||||||
return InternalHiiCreateOpCode (OpCodeHandle, &OpCode, EFI_IFR_DEFAULT_OP, sizeof (OpCode));
|
return InternalHiiCreateOpCode (OpCodeHandle, &OpCode, EFI_IFR_DEFAULT_OP, OFFSET_OF(EFI_IFR_DEFAULT, Value) + mHiiDefaultTypeToWidth[Type]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1922,7 +1922,7 @@ ParseIfrData (
|
|||||||
//
|
//
|
||||||
DefaultData.Type = DefaultValueFromOpcode;
|
DefaultData.Type = DefaultValueFromOpcode;
|
||||||
DefaultData.DefaultId = VarDefaultId;
|
DefaultData.DefaultId = VarDefaultId;
|
||||||
CopyMem (&DefaultData.Value, &IfrDefault->Value, sizeof (EFI_IFR_TYPE_VALUE));
|
CopyMem (&DefaultData.Value, &IfrDefault->Value, IfrDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value));
|
||||||
|
|
||||||
// If the value field is expression, set the cleaned flag.
|
// If the value field is expression, set the cleaned flag.
|
||||||
if (IfrDefault->Type == EFI_IFR_TYPE_OTHER) {
|
if (IfrDefault->Type == EFI_IFR_TYPE_OTHER) {
|
||||||
|
@ -1779,8 +1779,8 @@ ParseOpCodes (
|
|||||||
|
|
||||||
CurrentDefault->Value.Type = ((EFI_IFR_DEFAULT *) OpCodeData)->Type;
|
CurrentDefault->Value.Type = ((EFI_IFR_DEFAULT *) OpCodeData)->Type;
|
||||||
CopyMem (&CurrentDefault->DefaultId, &((EFI_IFR_DEFAULT *) OpCodeData)->DefaultId, sizeof (UINT16));
|
CopyMem (&CurrentDefault->DefaultId, &((EFI_IFR_DEFAULT *) OpCodeData)->DefaultId, sizeof (UINT16));
|
||||||
if (OpCodeLength == sizeof (EFI_IFR_DEFAULT)) {
|
if (OpCodeLength > OFFSET_OF (EFI_IFR_DEFAULT, Value)) {
|
||||||
CopyMem (&CurrentDefault->Value.Value, &((EFI_IFR_DEFAULT *) OpCodeData)->Value, sizeof (EFI_IFR_TYPE_VALUE));
|
CopyMem (&CurrentDefault->Value.Value, &((EFI_IFR_DEFAULT *) OpCodeData)->Value, OpCodeLength - OFFSET_OF (EFI_IFR_DEFAULT, Value));
|
||||||
ExtendValueToU64 (&CurrentDefault->Value);
|
ExtendValueToU64 (&CurrentDefault->Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user