Base on the type field to get the width of value field for option 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@14036 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -946,6 +946,7 @@ InternalHiiValidateCurrentSetting (
|
|||||||
UINT16 Offset;
|
UINT16 Offset;
|
||||||
UINT16 Width;
|
UINT16 Width;
|
||||||
UINT64 VarValue;
|
UINT64 VarValue;
|
||||||
|
UINT64 TmpValue;
|
||||||
LIST_ENTRY *Link;
|
LIST_ENTRY *Link;
|
||||||
UINT8 *VarBuffer;
|
UINT8 *VarBuffer;
|
||||||
UINTN MaxBufferSize;
|
UINTN MaxBufferSize;
|
||||||
@ -1510,7 +1511,9 @@ InternalHiiValidateCurrentSetting (
|
|||||||
//
|
//
|
||||||
// Check current value is the value of one of option.
|
// Check current value is the value of one of option.
|
||||||
//
|
//
|
||||||
if (VarValue == IfrOneOfOption->Value.u64) {
|
TmpValue = 0;
|
||||||
|
CopyMem (&TmpValue, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));
|
||||||
|
if (VarValue == TmpValue) {
|
||||||
//
|
//
|
||||||
// The value is one of option value.
|
// The value is one of option value.
|
||||||
// Set OpCode to Zero, don't need check again.
|
// Set OpCode to Zero, don't need check again.
|
||||||
@ -2628,7 +2631,7 @@ HiiCreateOneOfOptionOpCode (
|
|||||||
OpCode.Type = Type;
|
OpCode.Type = Type;
|
||||||
CopyMem (&OpCode.Value, &Value, mHiiDefaultTypeToWidth[Type]);
|
CopyMem (&OpCode.Value, &Value, mHiiDefaultTypeToWidth[Type]);
|
||||||
|
|
||||||
return InternalHiiCreateOpCode (OpCodeHandle, &OpCode, EFI_IFR_ONE_OF_OPTION_OP, sizeof (OpCode));
|
return InternalHiiCreateOpCode (OpCodeHandle, &OpCode, EFI_IFR_ONE_OF_OPTION_OP, OFFSET_OF(EFI_IFR_ONE_OF_OPTION, Value) + mHiiDefaultTypeToWidth[Type]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Implementation of interfaces function for EFI_HII_CONFIG_ROUTING_PROTOCOL.
|
Implementation of interfaces function for EFI_HII_CONFIG_ROUTING_PROTOCOL.
|
||||||
|
|
||||||
Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -1861,7 +1861,7 @@ ParseIfrData (
|
|||||||
// Prepare new DefaultValue
|
// Prepare new DefaultValue
|
||||||
//
|
//
|
||||||
DefaultData.Type = DefaultValueFromFlag;
|
DefaultData.Type = DefaultValueFromFlag;
|
||||||
CopyMem (&DefaultData.Value.u64, &IfrOneOfOption->Value.u64, sizeof (UINT64));
|
CopyMem (&DefaultData.Value, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));
|
||||||
if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT) == EFI_IFR_OPTION_DEFAULT) {
|
if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT) == EFI_IFR_OPTION_DEFAULT) {
|
||||||
DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
|
DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
|
||||||
InsertDefaultValue (BlockData, &DefaultData);
|
InsertDefaultValue (BlockData, &DefaultData);
|
||||||
@ -1886,7 +1886,7 @@ ParseIfrData (
|
|||||||
// Prepare new DefaultValue
|
// Prepare new DefaultValue
|
||||||
//
|
//
|
||||||
DefaultData.Type = DefaultValueFromDefault;
|
DefaultData.Type = DefaultValueFromDefault;
|
||||||
CopyMem (&DefaultData.Value.u64, &IfrOneOfOption->Value.u64, sizeof (UINT64));
|
CopyMem (&DefaultData.Value, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));
|
||||||
for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
|
for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
|
||||||
DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
|
DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
|
||||||
DefaultData.DefaultId = DefaultDataPtr->DefaultId;
|
DefaultData.DefaultId = DefaultDataPtr->DefaultId;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Parser for IFR binary encoding.
|
Parser for IFR binary encoding.
|
||||||
|
|
||||||
Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -1809,7 +1809,7 @@ ParseOpCodes (
|
|||||||
CurrentOption->Flags = ((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Flags;
|
CurrentOption->Flags = ((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Flags;
|
||||||
CurrentOption->Value.Type = ((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Type;
|
CurrentOption->Value.Type = ((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Type;
|
||||||
CopyMem (&CurrentOption->Text, &((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Option, sizeof (EFI_STRING_ID));
|
CopyMem (&CurrentOption->Text, &((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Option, sizeof (EFI_STRING_ID));
|
||||||
CopyMem (&CurrentOption->Value.Value, &((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Value, sizeof (EFI_IFR_TYPE_VALUE));
|
CopyMem (&CurrentOption->Value.Value, &((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Value, OpCodeLength - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));
|
||||||
ExtendValueToU64 (&CurrentOption->Value);
|
ExtendValueToU64 (&CurrentOption->Value);
|
||||||
|
|
||||||
ConditionalExprCount = GetConditionalExpressionCount(ExpressOption);
|
ConditionalExprCount = GetConditionalExpressionCount(ExpressOption);
|
||||||
|
Reference in New Issue
Block a user