summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
diff options
context:
space:
mode:
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>2012-09-10 08:29:32 +0000
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>2012-09-10 08:29:32 +0000
commit826120239506ccaf7a8603560b79cf341f2d3bd5 (patch)
treeaddfdbc88a6894b8ab4cc3c5da066fcb5ec7f6c0 /MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
parent1deb5cabe54d1177b207b0ed4b64d7819f0657b7 (diff)
downloadedk2-826120239506ccaf7a8603560b79cf341f2d3bd5.zip
edk2-826120239506ccaf7a8603560b79cf341f2d3bd5.tar.gz
edk2-826120239506ccaf7a8603560b79cf341f2d3bd5.tar.bz2
Enhance the check for options in the question.
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@13711 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/SetupBrowserDxe/Setup.c')
-rw-r--r--MdeModulePkg/Universal/SetupBrowserDxe/Setup.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
index ed7f015..381cefe 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
@@ -3026,6 +3026,12 @@ GetQuestionDefault (
Link = GetFirstNode (&Question->OptionListHead);
while (!IsNull (&Question->OptionListHead, Link)) {
Option = QUESTION_OPTION_FROM_LINK (Link);
+ Link = GetNextNode (&Question->OptionListHead, Link);
+
+ if ((Option->SuppressExpression != NULL) &&
+ EvaluateExpressionList(Option->SuppressExpression, FALSE, NULL, NULL) != ExpressFalse) {
+ continue;
+ }
if (((DefaultId == EFI_HII_DEFAULT_CLASS_STANDARD) && ((Option->Flags & EFI_IFR_OPTION_DEFAULT) != 0)) ||
((DefaultId == EFI_HII_DEFAULT_CLASS_MANUFACTURING) && ((Option->Flags & EFI_IFR_OPTION_DEFAULT_MFG) != 0))
@@ -3034,8 +3040,6 @@ GetQuestionDefault (
return EFI_SUCCESS;
}
-
- Link = GetNextNode (&Question->OptionListHead, Link);
}
}
}
@@ -3081,10 +3085,18 @@ GetQuestionDefault (
//
if (ValueToOption (Question, HiiValue) == NULL) {
Link = GetFirstNode (&Question->OptionListHead);
- if (!IsNull (&Question->OptionListHead, Link)) {
+ while (!IsNull (&Question->OptionListHead, Link)) {
Option = QUESTION_OPTION_FROM_LINK (Link);
+ Link = GetNextNode (&Question->OptionListHead, Link);
+
+ if ((Option->SuppressExpression != NULL) &&
+ EvaluateExpressionList(Option->SuppressExpression, FALSE, NULL, NULL) != ExpressFalse) {
+ continue;
+ }
+
CopyMem (HiiValue, &Option->Value, sizeof (EFI_HII_VALUE));
Status = EFI_SUCCESS;
+ break;
}
}
break;
@@ -3098,6 +3110,12 @@ GetQuestionDefault (
while (!IsNull (&Question->OptionListHead, Link)) {
Status = EFI_SUCCESS;
Option = QUESTION_OPTION_FROM_LINK (Link);
+ Link = GetNextNode (&Question->OptionListHead, Link);
+
+ if ((Option->SuppressExpression != NULL) &&
+ EvaluateExpressionList(Option->SuppressExpression, FALSE, NULL, NULL) != ExpressFalse) {
+ continue;
+ }
SetArrayData (Question->BufferValue, Question->ValueType, Index, Option->Value.Value.u64);
@@ -3105,8 +3123,6 @@ GetQuestionDefault (
if (Index >= Question->MaxContainers) {
break;
}
-
- Link = GetNextNode (&Question->OptionListHead, Link);
}
break;