{\r
EFI_IFR_ONE_OF OpCode;\r
UINTN Position;\r
+ UINTN Length;\r
\r
ASSERT (OptionsOpCodeHandle != NULL);\r
ASSERT ((QuestionFlags & (~(EFI_IFR_FLAG_READ_ONLY | EFI_IFR_FLAG_CALLBACK | EFI_IFR_FLAG_RESET_REQUIRED | EFI_IFR_FLAG_OPTIONS_ONLY))) == 0);\r
OpCode.Question.Flags = QuestionFlags;\r
OpCode.Flags = OneOfFlags;\r
\r
+ Length = OFFSET_OF (EFI_IFR_ONE_OF, data);\r
+ Length += (1 << (OneOfFlags & EFI_IFR_NUMERIC_SIZE)) * 3;\r
+\r
Position = InternalHiiOpCodeHandlePosition (OpCodeHandle);\r
- InternalHiiCreateOpCodeExtended (OpCodeHandle, &OpCode, EFI_IFR_ONE_OF_OP, sizeof (OpCode), 0, 1);\r
+ InternalHiiCreateOpCodeExtended (OpCodeHandle, &OpCode, EFI_IFR_ONE_OF_OP, Length, 0, 1);\r
InternalHiiAppendOpCodes (OpCodeHandle, OptionsOpCodeHandle);\r
if (DefaultsOpCodeHandle != NULL) {\r
InternalHiiAppendOpCodes (OpCodeHandle, DefaultsOpCodeHandle);\r