\r
VOID DecLength (UINT8 Size) {\r
if (mHeader->Length >= Size) {\r
- mHeader -= Size;\r
+ mHeader -= Size;\r
}\r
}\r
\r
\r
VOID SetVarStoreInfo (IN EFI_VARSTORE_INFO *Info) {\r
mHeader->VarStoreId = Info->mVarStoreId;\r
- mHeader->VarStoreInfo.VarName = Info->mInfo.mVarName;\r
+ mHeader->VarStoreInfo.VarName = Info->mInfo.mVarName;\r
mHeader->VarStoreInfo.VarOffset = Info->mInfo.mVarOffset;\r
}\r
\r
}\r
};\r
\r
-static CIfrQuestionHeader *gCurrentQuestion = NULL;\r
+static CIfrQuestionHeader *gCurrentQuestion = NULL;\r
+static CIfrObj *gCurrentIfrOpcode = NULL;\r
\r
/*\r
* The definition of CIfrMinMaxStepData\r
}\r
\r
EFI_VFR_RETURN_CODE SetFormId (IN EFI_FORM_ID FormId) {\r
+ if (FormId == 0) {\r
+ //\r
+ // FormId can't be 0.\r
+ //\r
+ return VFR_RETURN_INVALID_PARAMETER;\r
+ }\r
if (CIfrForm::ChekFormIdFree (FormId) == FALSE) {\r
return VFR_RETURN_FORMID_REDEFINED;\r
}\r
) : CIfrObj (EFI_IFR_DEFAULT_OP, (CHAR8 **)&mDefault),\r
CIfrOpHeader (EFI_IFR_DEFAULT_OP, &mDefault->Header) {\r
mDefault->Type = Type;\r
- mDefault->Value = Value;\r
+ mDefault->Value = Value;\r
mDefault->DefaultId = DefaultId;\r
}\r
\r
public:\r
CIfrSubtitle () : CIfrObj (EFI_IFR_SUBTITLE_OP, (CHAR8 **)&mSubtitle),\r
CIfrOpHeader (EFI_IFR_SUBTITLE_OP, &mSubtitle->Header),\r
- CIfrStatementHeader (&mSubtitle->Statement) {\r
+ CIfrStatementHeader (&mSubtitle->Statement) {\r
mSubtitle->Flags = 0;\r
}\r
\r
public:\r
CIfrResetButton () : CIfrObj (EFI_IFR_RESET_BUTTON_OP, (CHAR8 **)&mResetButton),\r
CIfrOpHeader (EFI_IFR_RESET_BUTTON_OP, &mResetButton->Header), \r
- CIfrStatementHeader (&mResetButton->Question.Header) {\r
+ CIfrStatementHeader (&mResetButton->Statement) {\r
mResetButton->DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
}\r
\r
CIfrOpHeader (EFI_IFR_CHECKBOX_OP, &mCheckBox->Header), \r
CIfrQuestionHeader (&mCheckBox->Question) {\r
mCheckBox->Flags = 0;\r
- gCurrentQuestion = this;\r
+ gCurrentQuestion = this;\r
}\r
\r
~CIfrCheckBox () {\r
- gCurrentQuestion = NULL;\r
+ gCurrentQuestion = NULL;\r
}\r
\r
EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, UINT8 LFlags) {\r
CIfrQuestionHeader (&mNumeric->Question),\r
CIfrMinMaxStepData (&mNumeric->data) {\r
mNumeric->Flags = EFI_IFR_NUMERIC_SIZE_1 | EFI_IFR_DISPLAY_UINT_DEC;\r
- gCurrentQuestion = this;\r
+ gCurrentQuestion = this;\r
+ gCurrentIfrOpcode = this;\r
}\r
\r
~CIfrNumeric () {\r
- gCurrentQuestion = NULL;\r
+ gCurrentQuestion = NULL;\r
+ gCurrentIfrOpcode = NULL;\r
}\r
\r
EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags) {\r
CIfrQuestionHeader (&mOneOf->Question),\r
CIfrMinMaxStepData (&mOneOf->data) {\r
mOneOf->Flags = 0;\r
- gCurrentQuestion = this;\r
+ gCurrentQuestion = this;\r
+ gCurrentIfrOpcode = this;\r
}\r
\r
~CIfrOneOf () {\r
- gCurrentQuestion = NULL;\r
+ gCurrentQuestion = NULL;\r
+ gCurrentIfrOpcode = NULL;\r
}\r
\r
EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags) {\r