]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Base on the value type to get the value for default opcode.
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 17 Dec 2012 03:30:43 +0000 (03:30 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 17 Dec 2012 03:30:43 +0000 (03:30 +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@14006 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Library/UefiHiiLib/HiiLib.c
MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c

index 63c85dea2fd4839bf8a294cc05d2d88e6c69510a..a2d31e7fda1ef1cadb34ef3e6ba49a7f3fa19e7a 100644 (file)
@@ -2664,7 +2664,7 @@ HiiCreateDefaultOpCode (
   OpCode.DefaultId = DefaultId;\r
   CopyMem (&OpCode.Value, &Value, mHiiDefaultTypeToWidth[Type]);\r
 \r
-  return InternalHiiCreateOpCode (OpCodeHandle, &OpCode, EFI_IFR_DEFAULT_OP, sizeof (OpCode));\r
+  return InternalHiiCreateOpCode (OpCodeHandle, &OpCode, EFI_IFR_DEFAULT_OP, OFFSET_OF(EFI_IFR_DEFAULT, Value) + mHiiDefaultTypeToWidth[Type]);\r
 }\r
 \r
 /**\r
index 1cb754bde0f6ce04543642d99ea863461e13d7b0..ee5203459c101bc932eb41221f8f737348fa71c3 100644 (file)
@@ -1922,7 +1922,7 @@ ParseIfrData (
       //\r
       DefaultData.Type        = DefaultValueFromOpcode;\r
       DefaultData.DefaultId   = VarDefaultId;\r
-      CopyMem (&DefaultData.Value, &IfrDefault->Value, sizeof (EFI_IFR_TYPE_VALUE));\r
+      CopyMem (&DefaultData.Value, &IfrDefault->Value, IfrDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value));\r
       \r
       // If the value field is expression, set the cleaned flag.\r
       if (IfrDefault->Type ==  EFI_IFR_TYPE_OTHER) {\r
index 7221c42fa3110db8d7c69c4b1ad2394c42a00620..7493a943027ebea1eda4c6e7eb02ff7a96341d27 100644 (file)
@@ -1779,8 +1779,8 @@ ParseOpCodes (
 \r
       CurrentDefault->Value.Type = ((EFI_IFR_DEFAULT *) OpCodeData)->Type;\r
       CopyMem (&CurrentDefault->DefaultId, &((EFI_IFR_DEFAULT *) OpCodeData)->DefaultId, sizeof (UINT16));\r
-      if (OpCodeLength == sizeof (EFI_IFR_DEFAULT)) {\r
-        CopyMem (&CurrentDefault->Value.Value, &((EFI_IFR_DEFAULT *) OpCodeData)->Value, sizeof (EFI_IFR_TYPE_VALUE));\r
+      if (OpCodeLength > OFFSET_OF (EFI_IFR_DEFAULT, Value)) {\r
+        CopyMem (&CurrentDefault->Value.Value, &((EFI_IFR_DEFAULT *) OpCodeData)->Value, OpCodeLength - OFFSET_OF (EFI_IFR_DEFAULT, Value));\r
         ExtendValueToU64 (&CurrentDefault->Value);\r
       }\r
 \r