// Root expression extension function called by other function.\r
//\r
vfrStatementExpression [UINT32 RootLevel, UINT32 ExpOpCount = 0] :\r
- << if ($RootLevel == 0) {mCIfrOpHdrIndex ++; if (mCIfrOpHdrIndex >= MAX_IFR_EXPRESSION_DEPTH) _PCATCH (VFR_RETURN_INVALID_PARAMETER, 0, "The depth of expression exceeds the max supported level 8!"); _CLEAR_SAVED_OPHDR ();} >>\r
+ <<\r
+ if ($RootLevel == 0) {\r
+ mCIfrOpHdrIndex ++;\r
+ if (mCIfrOpHdrIndex >= MAX_IFR_EXPRESSION_DEPTH) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, 0, "The depth of expression exceeds the max supported level 8!");\r
+ }\r
+ _INIT_OPHDR_COND ();\r
+ }\r
+ >>\r
andTerm[$RootLevel, $ExpOpCount]\r
(\r
L:OR andTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrOr OObj(L->getLine()); >>\r
UINT8 mCIfrOpHdrIndex;\r
VOID _SAVE_OPHDR_COND (IN CIfrOpHeader &, IN BOOLEAN, UINT32 LineNo = 0);\r
VOID _CLEAR_SAVED_OPHDR (VOID);\r
+ VOID _INIT_OPHDR_COND (VOID);\r
BOOLEAN _SET_SAVED_OPHDR_SCOPE (VOID);\r
\r
\r
}\r
}\r
\r
+VOID\r
+EfiVfrParser::_INIT_OPHDR_COND (\r
+ VOID\r
+ )\r
+{\r
+ mCIfrOpHdr[mCIfrOpHdrIndex] = NULL;\r
+ mCIfrOpHdrLineNo[mCIfrOpHdrIndex] = 0;\r
+}\r
+\r
VOID\r
EfiVfrParser::_CLEAR_SAVED_OPHDR (\r
VOID\r
{\r
if (mCIfrOpHdr[mCIfrOpHdrIndex] != NULL) {\r
delete mCIfrOpHdr[mCIfrOpHdrIndex];\r
- mCIfrOpHdr[mCIfrOpHdrIndex] = NULL;\r
+ mCIfrOpHdr[mCIfrOpHdrIndex] = NULL;\r
}\r
- mCIfrOpHdrLineNo[mCIfrOpHdrIndex] = 0;\r
}\r
\r
BOOLEAN\r