From 98b4bea591cdca48871db25c3be9e48600f45439 Mon Sep 17 00:00:00 2001 From: Takeshi Abe Date: Sat, 25 Mar 2017 13:50:55 +0900 Subject: starmath: Refrain from skipping an extra token at missing "}" which is for closing "stack {". Change-Id: I2161507634fdb33583053168acfcb87754765652 Reviewed-on: https://gerrit.libreoffice.org/35784 Tested-by: Jenkins Reviewed-by: Takeshi Abe --- starmath/source/parse.cxx | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) (limited to 'starmath') diff --git a/starmath/source/parse.cxx b/starmath/source/parse.cxx index 3effa80d1ed4..d090cfecf93e 100644 --- a/starmath/source/parse.cxx +++ b/starmath/source/parse.cxx @@ -2073,33 +2073,23 @@ SmStructureNode *SmParser::DoStack() { std::unique_ptr pSNode(new SmTableNode(m_aCurToken)); NextToken(); - if (m_aCurToken.eType == TLGROUP) + if (m_aCurToken.eType != TLGROUP) + return DoError(SmParseError::LgroupExpected); + SmNodeArray aExprArr; + do { - sal_uInt16 n = 0; - - do - { - NextToken(); - m_aNodeStack.emplace_front(DoAlign()); - n++; - } - while (m_aCurToken.eType == TPOUND); - - SmNodeArray ExpressionArray(n); - for (auto rIt = ExpressionArray.rbegin(), rEnd = ExpressionArray.rend(); rIt != rEnd; ++rIt) - { - *rIt = popOrZero(m_aNodeStack); - } - - if (m_aCurToken.eType != TRGROUP) - Error(SmParseError::RgroupExpected); - - pSNode->SetSubNodes(ExpressionArray); - NextToken(); - return pSNode.release(); + aExprArr.push_back(DoAlign()); } - return DoError(SmParseError::LgroupExpected); + while (m_aCurToken.eType == TPOUND); + + if (m_aCurToken.eType == TRGROUP) + NextToken(); + else + aExprArr.push_back(DoError(SmParseError::RgroupExpected)); + + pSNode->SetSubNodes(aExprArr); + return pSNode.release(); } SmStructureNode *SmParser::DoMatrix() -- cgit