From 2bf63b20d24947d59b8cc93c2b460c0a607fe4aa Mon Sep 17 00:00:00 2001 From: Dandan Bi Date: Thu, 27 Aug 2015 08:19:40 +0000 Subject: [PATCH] BaseTools:To generate string default type correctly in VfrCompiler Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi Reviewed-by: Liming Gao git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18336 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/C/VfrCompile/VfrFormPkg.h | 1 + BaseTools/Source/C/VfrCompile/VfrSyntax.g | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h b/BaseTools/Source/C/VfrCompile/VfrFormPkg.h index 84300a7584..644dfddad9 100644 --- a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h +++ b/BaseTools/Source/C/VfrCompile/VfrFormPkg.h @@ -604,6 +604,7 @@ public: static CIfrQuestionHeader *gCurrentQuestion = NULL; static CIfrMinMaxStepData *gCurrentMinMaxData = NULL; static BOOLEAN gIsOrderedList = FALSE; +static BOOLEAN gIsStringOp = FALSE; /* * The definition of all of the UEFI IFR Objects diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g b/BaseTools/Source/C/VfrCompile/VfrSyntax.g index fba8967fd2..ad839b2ab6 100644 --- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g +++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g @@ -1746,6 +1746,8 @@ vfrStatementDefault : DObj->SetLineNo(D->getLine()); if (ArrayType) { DObj->SetType (EFI_IFR_TYPE_BUFFER); + } else if (gIsStringOp) { + DObj->SetType (EFI_IFR_TYPE_STRING); } else { DObj->SetType (_GET_CURRQEST_DATATYPE()); } @@ -2819,7 +2821,7 @@ vfrStatementString : UINT8 StringMinSize; UINT8 StringMaxSize; >> - L:String << SObj.SetLineNo(L->getLine()); >> + L:String << SObj.SetLineNo(L->getLine()); gIsStringOp = TRUE;>> vfrQuestionHeader[SObj] "," { F:FLAGS "=" vfrStringFlagsField[SObj, F->getLine()] "," } { @@ -2847,7 +2849,7 @@ vfrStatementString : SObj.SetMaxSize (StringMaxSize); >> vfrStatementQuestionOptionList - E:EndString << CRT_END_OP (E); >> + E:EndString << CRT_END_OP (E); gIsStringOp = FALSE;>> ";" ; -- 2.39.2