mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-11-03 21:17:23 +01:00 
			
		
		
		
	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:
		
							parent
							
								
									dcf5ba47ae
								
							
						
					
					
						commit
						a7f87053e0
					
				@ -946,6 +946,7 @@ InternalHiiValidateCurrentSetting (
 | 
			
		||||
  UINT16                       Offset;
 | 
			
		||||
  UINT16                       Width;
 | 
			
		||||
  UINT64                       VarValue;
 | 
			
		||||
  UINT64                       TmpValue;
 | 
			
		||||
  LIST_ENTRY                   *Link;
 | 
			
		||||
  UINT8                        *VarBuffer;
 | 
			
		||||
  UINTN                        MaxBufferSize;
 | 
			
		||||
@ -1510,7 +1511,9 @@ InternalHiiValidateCurrentSetting (
 | 
			
		||||
            //
 | 
			
		||||
            // 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.
 | 
			
		||||
              // Set OpCode to Zero, don't need check again.
 | 
			
		||||
@ -2628,7 +2631,7 @@ HiiCreateOneOfOptionOpCode (
 | 
			
		||||
  OpCode.Type   = 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
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
@ -1861,7 +1861,7 @@ ParseIfrData (
 | 
			
		||||
        // Prepare new DefaultValue
 | 
			
		||||
        //
 | 
			
		||||
        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) {
 | 
			
		||||
          DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
 | 
			
		||||
          InsertDefaultValue (BlockData, &DefaultData);
 | 
			
		||||
@ -1886,7 +1886,7 @@ ParseIfrData (
 | 
			
		||||
        // Prepare new DefaultValue
 | 
			
		||||
        //        
 | 
			
		||||
        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) {
 | 
			
		||||
          DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry); 
 | 
			
		||||
          DefaultData.DefaultId   = DefaultDataPtr->DefaultId;
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
/** @file
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
@ -1809,7 +1809,7 @@ ParseOpCodes (
 | 
			
		||||
      CurrentOption->Flags = ((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Flags;
 | 
			
		||||
      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->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);
 | 
			
		||||
 | 
			
		||||
      ConditionalExprCount = GetConditionalExpressionCount(ExpressOption);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user