UINT16 DefaultId;\r
EFI_HII_VARIABLE_PACK *Pack;\r
EFI_HII_VARIABLE_PACK_LIST *PackList;\r
+ UINTN Index;\r
\r
if (DefaultMask == FRAMEWORK_EFI_IFR_FLAG_DEFAULT) {\r
DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
List = GetNextNode (ListHead, List); \r
}\r
\r
+ if (Count == 0) {\r
+ *VariablePackList = NULL;\r
+ return EFI_NOT_FOUND;\r
+ }\r
+\r
Size = Size + Count * (sizeof (EFI_HII_VARIABLE_PACK_LIST) + sizeof (EFI_HII_VARIABLE_PACK));\r
\r
*VariablePackList = AllocateZeroPool (Size);\r
\r
PackList = (EFI_HII_VARIABLE_PACK_LIST *) *VariablePackList;\r
Pack = (EFI_HII_VARIABLE_PACK *) (PackList + 1);\r
+ Index = 0;\r
while (!IsNull (ListHead, List)) {\r
Node = UEFI_IFR_BUFFER_STORAGE_NODE_FROM_LIST(List);\r
\r
Size += sizeof (EFI_HII_VARIABLE_PACK_LIST);\r
\r
//\r
- // initialize EFI_HII_VARIABLE_PACK_LIST\r
+ // Initialize EFI_HII_VARIABLE_PACK_LIST\r
//\r
PackList->VariablePack = Pack;\r
- PackList->NextVariablePack = (EFI_HII_VARIABLE_PACK_LIST *)((UINT8 *) PackList + Size);\r
+ Index++;\r
+ if (Index < Count) {\r
+ PackList->NextVariablePack = (EFI_HII_VARIABLE_PACK_LIST *)((UINT8 *) PackList + Size);\r
+ }\r
\r
}\r
\r