]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools:To generate string default type correctly in VfrCompiler
authorDandan Bi <dandan.bi@intel.com>
Thu, 27 Aug 2015 08:19:40 +0000 (08:19 +0000)
committerdandanbi <dandanbi@Edk2>
Thu, 27 Aug 2015 08:19:40 +0000 (08:19 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
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
BaseTools/Source/C/VfrCompile/VfrSyntax.g

index 84300a75841b39a10ce85a0edc451563b8dd6173..644dfddad9434506f0797a53bf3ab87c47c631cf 100644 (file)
@@ -604,6 +604,7 @@ public:
 static CIfrQuestionHeader *gCurrentQuestion  = NULL;\r
 static CIfrMinMaxStepData *gCurrentMinMaxData = NULL;\r
 static BOOLEAN            gIsOrderedList = FALSE;\r
+static BOOLEAN            gIsStringOp = FALSE;\r
 \r
 /*\r
  * The definition of all of the UEFI IFR Objects\r
index fba8967fd2a2685654884e1915286cc1a9a20f47..ad839b2ab66e69f6193c781bb52c19713028f8b4 100644 (file)
@@ -1746,6 +1746,8 @@ vfrStatementDefault :
                                                         DObj->SetLineNo(D->getLine());\r
                                                         if (ArrayType) {\r
                                                           DObj->SetType (EFI_IFR_TYPE_BUFFER);\r
+                                                        } else if (gIsStringOp) {\r
+                                                          DObj->SetType (EFI_IFR_TYPE_STRING);\r
                                                         } else {\r
                                                           DObj->SetType (_GET_CURRQEST_DATATYPE());\r
                                                         }\r
@@ -2819,7 +2821,7 @@ vfrStatementString :
      UINT8 StringMinSize;\r
      UINT8 StringMaxSize;\r
   >>\r
-  L:String                                             << SObj.SetLineNo(L->getLine()); >>\r
+  L:String                                             << SObj.SetLineNo(L->getLine()); gIsStringOp = TRUE;>>\r
   vfrQuestionHeader[SObj] ","\r
   { F:FLAGS "=" vfrStringFlagsField[SObj, F->getLine()] "," }\r
   {\r
@@ -2847,7 +2849,7 @@ vfrStatementString :
                                                           SObj.SetMaxSize (StringMaxSize);\r
                                                        >>\r
   vfrStatementQuestionOptionList\r
-  E:EndString                                          << CRT_END_OP (E); >>\r
+  E:EndString                                          << CRT_END_OP (E); gIsStringOp = FALSE;>>\r
   ";"\r
   ;\r
 \r