diff options
author | qwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-11-04 14:28:08 +0000 |
---|---|---|
committer | qwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-11-04 14:28:08 +0000 |
commit | 8d00a0f1955de7aa4b658009a36df5165d0a75be (patch) | |
tree | 1eec5d9bd12036da7ebf1ec38d5f7afbfd2a4e03 /MdeModulePkg/Universal/SetupBrowserDxe/Setup.c | |
parent | 9185c388a9e992bcbcf38d10fb24321a60950562 (diff) | |
download | edk2-platforms-8d00a0f1955de7aa4b658009a36df5165d0a75be.tar.xz |
Sync in bug fix from EDK I:
1) issue with setup browser and IFR refresh opcode
2) [HII]HIIConfigRoutingExportConfig generate error format of <MultiConfigAltResp>
3) [HII] ConfigRouting->ExtractConfig() will cause overflow
4) [Hii Database] EFI_HII_DATABASE_NOTIFY should be invoked when a string package is created internally when a new String Token is created
5) [PT]HIIConfigAccessProtocolTest fail on NT32uefi
6) Incorrect HII package types in EDK
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6378 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/SetupBrowserDxe/Setup.c')
-rw-r--r-- | MdeModulePkg/Universal/SetupBrowserDxe/Setup.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c index 29b606fdef..847679fce5 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c @@ -58,6 +58,7 @@ CHAR16 *gFunctionNineString; CHAR16 *gFunctionTenString;
CHAR16 *gEnterString;
CHAR16 *gEnterCommitString;
+CHAR16 *gEnterEscapeString;
CHAR16 *gEscapeString;
CHAR16 *gSaveFailed;
CHAR16 *gMoveHighlight;
@@ -81,6 +82,7 @@ CHAR16 *gPlusString; CHAR16 *gMinusString;
CHAR16 *gAdjustNumber;
CHAR16 *gSaveChanges;
+CHAR16 *gOptionMismatch;
CHAR16 gPromptBlockWidth;
CHAR16 gOptionBlockWidth;
@@ -1050,6 +1052,7 @@ GetQuestionValue ( CHAR16 *Progress;
CHAR16 *Result;
CHAR16 *Value;
+ CHAR16 *StringPtr;
UINTN Length;
BOOLEAN IsBufferStorage;
BOOLEAN IsString;
@@ -1245,6 +1248,16 @@ GetQuestionValue ( // Skip '=', point to value
//
Value = Value + 1;
+
+ //
+ // Suppress <AltResp> if any
+ //
+ StringPtr = Value;
+ while (*StringPtr != L'\0' && *StringPtr != L'&') {
+ StringPtr++;
+ }
+ *StringPtr = L'\0';
+
if (!IsBufferStorage && IsString) {
//
// Convert Config String to Unicode String, e.g "0041004200430044" => "ABCD"
@@ -1896,6 +1909,16 @@ ExtractFormDefault ( Link = GetNextNode (&Form->StatementListHead, Link);
//
+ // If Question is suppressed, don't reset it to default
+ //
+ if (Question->SuppressExpression != NULL) {
+ Status = EvaluateExpression (FormSet, Form, Question->SuppressExpression);
+ if (!EFI_ERROR (Status) && Question->SuppressExpression->Result.Value.b) {
+ continue;
+ }
+ }
+
+ //
// Reset Question to its default value
//
Status = GetQuestionDefault (FormSet, Form, Question, DefaultId);
@@ -2146,7 +2169,7 @@ GetIfrBinaryData ( Package = ((UINT8 *) HiiPackageList) + Offset;
CopyMem (&PackageHeader, Package, sizeof (EFI_HII_PACKAGE_HEADER));
- if (PackageHeader.Type == EFI_HII_PACKAGE_FORM) {
+ if (PackageHeader.Type == EFI_HII_PACKAGE_FORMS) {
//
// Search FormSet in this Form Package
//
|