EFI_STRING Progress;\r
EFI_STRING Result;\r
CHAR16 *StrPtr;\r
+ EFI_STRING ConfigRequest;\r
+ UINTN StrLen;\r
+\r
+ ConfigRequest = NULL;\r
\r
switch (Storage->BrowserStorage->Type) {\r
case EFI_HII_VARSTORE_EFI_VARIABLE:\r
ConfigRequestAdjust(Storage);\r
return;\r
}\r
+\r
+ //\r
+ // Create the config request string to get all fields for this storage.\r
+ // Allocate and fill a buffer large enough to hold the <ConfigHdr> template\r
+ // followed by "&OFFSET=0&WIDTH=WWWW"followed by a Null-terminator\r
+ //\r
+ StrLen = StrSize (Storage->BrowserStorage->ConfigHdr) + 20 * sizeof (CHAR16);\r
+ ConfigRequest = AllocateZeroPool (StrLen);\r
+ ASSERT (ConfigRequest != NULL);\r
+ UnicodeSPrint (\r
+ ConfigRequest, \r
+ StrLen, \r
+ L"%s&OFFSET=0&WIDTH=%04x", \r
+ Storage->BrowserStorage->ConfigHdr,\r
+ Storage->BrowserStorage->Size);\r
break;\r
\r
case EFI_HII_VARSTORE_BUFFER:\r
return;\r
}\r
Storage->BrowserStorage->Initialized = TRUE;\r
+ ConfigRequest = Storage->ConfigRequest;\r
break;\r
\r
default:\r
//\r
Status = mHiiConfigRouting->ExtractConfig (\r
mHiiConfigRouting,\r
- Storage->ConfigRequest,\r
+ ConfigRequest,\r
&Progress,\r
&Result\r
);\r
// Input NULL for ConfigRequest field means sync all fields from editbuffer to buffer. \r
//\r
SynchronizeStorage(FormSet, Storage->BrowserStorage, NULL, TRUE);\r
+\r
+ if (Storage->BrowserStorage->Type == EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER) {\r
+ if (ConfigRequest != NULL) {\r
+ FreePool (ConfigRequest);\r
+ }\r
+ }\r
}\r
\r
/**\r