]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Base on the type field to generate numeric opcode.
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Sun, 6 Jan 2013 06:07:38 +0000 (06:07 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Sun, 6 Jan 2013 06:07:38 +0000 (06:07 +0000)
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@14034 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Library/UefiHiiLib/HiiLib.c

index a2d31e7fda1ef1cadb34ef3e6ba49a7f3fa19e7a..2135cf2b83a24e8ac4bee20ba9699b18ad73d2e1 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   HII Library implementation that uses DXE protocols and services.\r
 \r
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -2959,9 +2959,11 @@ HiiCreateNumericOpCode (
 {\r
   EFI_IFR_NUMERIC  OpCode;\r
   UINTN            Position;\r
+  UINTN            Length;\r
 \r
   ASSERT ((QuestionFlags & (~(EFI_IFR_FLAG_READ_ONLY | EFI_IFR_FLAG_CALLBACK | EFI_IFR_FLAG_RESET_REQUIRED))) == 0);\r
 \r
+  Length  = 0;\r
   ZeroMem (&OpCode, sizeof (OpCode));\r
   OpCode.Question.QuestionId             = QuestionId;\r
   OpCode.Question.VarStoreId             = VarStoreId;\r
@@ -2976,33 +2978,39 @@ HiiCreateNumericOpCode (
     OpCode.data.u8.MinValue = (UINT8)Minimum;\r
     OpCode.data.u8.MaxValue = (UINT8)Maximum;\r
     OpCode.data.u8.Step     = (UINT8)Step;\r
+    Length                  = 3;\r
     break;\r
 \r
   case EFI_IFR_NUMERIC_SIZE_2:\r
     OpCode.data.u16.MinValue = (UINT16)Minimum;\r
     OpCode.data.u16.MaxValue = (UINT16)Maximum;\r
     OpCode.data.u16.Step     = (UINT16)Step;\r
+    Length                   = 6;\r
     break;\r
 \r
   case EFI_IFR_NUMERIC_SIZE_4:\r
     OpCode.data.u32.MinValue = (UINT32)Minimum;\r
     OpCode.data.u32.MaxValue = (UINT32)Maximum;\r
     OpCode.data.u32.Step     = (UINT32)Step;\r
+    Length                   = 12;\r
     break;\r
 \r
   case EFI_IFR_NUMERIC_SIZE_8:\r
     OpCode.data.u64.MinValue = Minimum;\r
     OpCode.data.u64.MaxValue = Maximum;\r
     OpCode.data.u64.Step     = Step;\r
+    Length                   = 24;\r
     break;\r
   }\r
 \r
+  Length += OFFSET_OF (EFI_IFR_NUMERIC, data);\r
+\r
   if (DefaultsOpCodeHandle == NULL) {\r
-    return InternalHiiCreateOpCode (OpCodeHandle, &OpCode, EFI_IFR_NUMERIC_OP, sizeof (OpCode));\r
+    return InternalHiiCreateOpCode (OpCodeHandle, &OpCode, EFI_IFR_NUMERIC_OP, Length);\r
   }\r
 \r
   Position = InternalHiiOpCodeHandlePosition (OpCodeHandle);\r
-  InternalHiiCreateOpCodeExtended (OpCodeHandle, &OpCode, EFI_IFR_NUMERIC_OP, sizeof (OpCode), 0, 1);\r
+  InternalHiiCreateOpCodeExtended (OpCodeHandle, &OpCode, EFI_IFR_NUMERIC_OP, Length, 0, 1);\r
   InternalHiiAppendOpCodes (OpCodeHandle, DefaultsOpCodeHandle);\r
   HiiCreateEndOpCode (OpCodeHandle);\r
   return InternalHiiOpCodeHandleBuffer (OpCodeHandle) + Position;\r