\r
OptionCount = 0;\r
\r
- //\r
- // Try for a 512 byte Buffer\r
- //\r
- BufferSize = 0x200;\r
-\r
- //\r
- // Allocate memory for our Form binary\r
- //\r
- StringBuffer = AllocateZeroPool (BufferSize);\r
- ASSERT (StringBuffer != NULL);\r
-\r
for (Index = 0; LanguageString[Index] != 0; Index += 3) {\r
Token = 0;\r
CopyMem (Lang, &LanguageString[Index], 6);\r
mLastSelection = (UINT16) OptionCount;\r
}\r
\r
+ BufferSize = 0;\r
+ Status = gHii->GetString (gHii, gStringPackHandle, 1, TRUE, Lang, &BufferSize, NULL);\r
+ ASSERT(Status == EFI_BUFFER_TOO_SMALL);\r
+ StringBuffer = AllocateZeroPool (BufferSize);\r
+ ASSERT (StringBuffer != NULL);\r
Status = gHii->GetString (gHii, gStringPackHandle, 1, TRUE, Lang, &BufferSize, StringBuffer);\r
gHii->NewString (gHii, NULL, gStringPackHandle, &Token, StringBuffer);\r
+ FreePool (StringBuffer);\r
CopyMem (&OptionList[OptionCount].StringToken, &Token, sizeof (UINT16));\r
CopyMem (&OptionList[OptionCount].Value, &OptionCount, sizeof (UINT16));\r
Key = 0x1234;\r
FreePool (LanguageString);\r
\r
if (ReInitializeStrings) {\r
- FreePool (StringBuffer);\r
FreePool (OptionList);\r
return EFI_SUCCESS;\r
}\r
//\r
// FreePool (OptionList);\r
//\r
- FreePool (StringBuffer);\r
return Status;\r
}\r
\r