From dcf5ba47aeb9cc7b1369afb94ae658b48e2529ca Mon Sep 17 00:00:00 2001 From: ydong10 Date: Sun, 6 Jan 2013 06:09:43 +0000 Subject: Base on the type field to generate oneof opcode. Signed-off-by: Eric Dong Reviewed-by: Liming Gao git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14035 6f19259b-4bc3-4df7-8a09-765794883524 --- MdeModulePkg/Library/UefiHiiLib/HiiLib.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c index 2135cf2..02887bf 100644 --- a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c +++ b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c @@ -3123,6 +3123,7 @@ HiiCreateOneOfOpCode ( { EFI_IFR_ONE_OF OpCode; UINTN Position; + UINTN Length; ASSERT (OptionsOpCodeHandle != NULL); ASSERT ((QuestionFlags & (~(EFI_IFR_FLAG_READ_ONLY | EFI_IFR_FLAG_CALLBACK | EFI_IFR_FLAG_RESET_REQUIRED | EFI_IFR_FLAG_OPTIONS_ONLY))) == 0); @@ -3136,8 +3137,11 @@ HiiCreateOneOfOpCode ( OpCode.Question.Flags = QuestionFlags; OpCode.Flags = OneOfFlags; + Length = OFFSET_OF (EFI_IFR_ONE_OF, data); + Length += (1 << (OneOfFlags & EFI_IFR_NUMERIC_SIZE)) * 3; + Position = InternalHiiOpCodeHandlePosition (OpCodeHandle); - InternalHiiCreateOpCodeExtended (OpCodeHandle, &OpCode, EFI_IFR_ONE_OF_OP, sizeof (OpCode), 0, 1); + InternalHiiCreateOpCodeExtended (OpCodeHandle, &OpCode, EFI_IFR_ONE_OF_OP, Length, 0, 1); InternalHiiAppendOpCodes (OpCodeHandle, OptionsOpCodeHandle); if (DefaultsOpCodeHandle != NULL) { InternalHiiAppendOpCodes (OpCodeHandle, DefaultsOpCodeHandle); -- cgit v1.1