[Libreoffice-commits] core.git: starmath/inc starmath/qa starmath/source

Caolán McNamara caolanm at redhat.com
Wed Jan 10 17:01:08 UTC 2018


 starmath/inc/node.hxx                           |   18 +++++------
 starmath/qa/cppunit/test_cursor.cxx             |    8 ++--
 starmath/qa/cppunit/test_nodetotextvisitors.cxx |   20 ++++++------
 starmath/source/ElementsDockingWindow.cxx       |    2 -
 starmath/source/cursor.cxx                      |   14 ++++----
 starmath/source/document.cxx                    |    2 -
 starmath/source/node.cxx                        |   39 ++++++++++++------------
 7 files changed, 53 insertions(+), 50 deletions(-)

New commits:
commit 6f69982c6bad31615faac1fdbeed846dc29664b3
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Jan 10 10:07:13 2018 +0000

    ofz#5221 depth protect Prepare
    
    Change-Id: I49804a8c65b3af204bfd79d6ff5b3280ab876ec4
    Reviewed-on: https://gerrit.libreoffice.org/47693
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/starmath/inc/node.hxx b/starmath/inc/node.hxx
index acef42a50cfd..01423959652b 100644
--- a/starmath/inc/node.hxx
+++ b/starmath/inc/node.hxx
@@ -151,7 +151,7 @@ public:
     /** Prepare preliminary settings about font and text
      *  (e.g. maFace, meRectHorAlign, mnFlags, mnAttributes, etc.)
      */
-    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell);
+    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth);
     void PrepareAttributes();
 
     void         SetRectHorAlign(RectHorAlign eHorAlign, bool bApplyToSubTree = true );
@@ -410,7 +410,7 @@ public:
     /** Set the index within GetText() where the selection end */
     void                SetSelectionEnd(sal_Int32 index) {mnSelectionEnd = index;}
 
-    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell) override;
+    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth) override;
     virtual void Arrange(OutputDevice &rDev, const SmFormat &rFormat) override;
     virtual void CreateTextFromNode(OUString &rText) override;
 
@@ -441,7 +441,7 @@ protected:
 public:
     explicit SmSpecialNode(const SmToken &rNodeToken);
 
-    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell) override;
+    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth) override;
     virtual void Arrange(OutputDevice &rDev, const SmFormat &rFormat) override;
 
     void Accept(SmVisitor* pVisitor) override;
@@ -490,7 +490,7 @@ public:
     virtual void AdaptToX(OutputDevice &rDev, sal_uLong nWidth) override;
     virtual void AdaptToY(OutputDevice &rDev, sal_uLong nHeight) override;
 
-    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell) override;
+    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth) override;
     virtual void Arrange(OutputDevice &rDev, const SmFormat &rFormat) override;
     void CreateTextFromNode(OUString &rText) override;
     void Accept(SmVisitor* pVisitor) override;
@@ -551,7 +551,7 @@ public:
     }
     SmPlaceNode() : SmMathSymbolNode(SmNodeType::Place, SmToken(TPLACE, MS_PLACE, "<?>")) {};
 
-    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell) override;
+    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth) override;
     virtual void Arrange(OutputDevice &rDev, const SmFormat &rFormat) override;
     void Accept(SmVisitor* pVisitor) override;
 };
@@ -571,7 +571,7 @@ public:
         SetText(OUString(MS_ERROR));
     }
 
-    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell) override;
+    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth) override;
     virtual void Arrange(OutputDevice &rDev, const SmFormat &rFormat) override;
     void Accept(SmVisitor* pVisitor) override;
 };
@@ -629,7 +629,7 @@ public:
     void  SetUseExtraSpaces(bool bVal) { mbUseExtraSpaces = bVal; }
     bool  IsUseExtraSpaces() const { return mbUseExtraSpaces; };
 
-    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell) override;
+    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth) override;
     virtual void Arrange(OutputDevice &rDev, const SmFormat &rFormat) override;
     void Accept(SmVisitor* pVisitor) override;
 };
@@ -1064,7 +1064,7 @@ public:
     const Fraction & GetSizeParameter() const {return maFontSize;}
     FontSizeType GetSizeType() const {return meSizeType;}
 
-    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell) override;
+    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth) override;
     virtual void Arrange(OutputDevice &rDev, const SmFormat &rFormat) override;
     void CreateTextFromNode(OUString &rText) override;
     void Accept(SmVisitor* pVisitor) override;
@@ -1121,7 +1121,7 @@ public:
     sal_uInt16   GetBlankNum() const { return mnNum; }
     void         SetBlankNum(sal_uInt16 nNumber) { mnNum = nNumber; }
 
-    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell) override;
+    virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth) override;
     virtual void Arrange(OutputDevice &rDev, const SmFormat &rFormat) override;
     void Accept(SmVisitor* pVisitor) override;
     virtual void CreateTextFromNode(OUString &rText) override;
diff --git a/starmath/qa/cppunit/test_cursor.cxx b/starmath/qa/cppunit/test_cursor.cxx
index 02c7ff433371..702777a614f8 100644
--- a/starmath/qa/cppunit/test_cursor.cxx
+++ b/starmath/qa/cppunit/test_cursor.cxx
@@ -69,7 +69,7 @@ void Test::testCopyPaste()
 {
     OUString const sInput("a * b + c");
     std::unique_ptr<SmNode> xTree(SmParser().Parse(sInput));
-    xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
 
     SmCursor aCursor(xTree.get(), xDocShRef.get());
     ScopedVclPtrInstance<VirtualDevice> pOutputDevice;
@@ -92,7 +92,7 @@ void Test::testCopySelectPaste()
 {
     OUString const sInput("a * b + c");
     std::unique_ptr<SmNode> xTree(SmParser().Parse(sInput));
-    xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
 
     SmCursor aCursor(xTree.get(), xDocShRef.get());
     ScopedVclPtrInstance<VirtualDevice> pOutputDevice;
@@ -119,7 +119,7 @@ void Test::testCutPaste()
 {
     OUString const sInput("a * b + c");
     std::unique_ptr<SmNode> xTree(SmParser().Parse(sInput));
-    xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
 
     SmCursor aCursor(xTree.get(), xDocShRef.get());
     ScopedVclPtrInstance<VirtualDevice> pOutputDevice;
@@ -142,7 +142,7 @@ void Test::testCutSelectPaste()
 {
     OUString const sInput("a * b + c");
     std::unique_ptr<SmNode> xTree(SmParser().Parse(sInput));
-    xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    xTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
 
     SmCursor aCursor(xTree.get(), xDocShRef.get());
     ScopedVclPtrInstance<VirtualDevice> pOutputDevice;
diff --git a/starmath/qa/cppunit/test_nodetotextvisitors.cxx b/starmath/qa/cppunit/test_nodetotextvisitors.cxx
index dee561d371aa..6791e9d6270c 100644
--- a/starmath/qa/cppunit/test_nodetotextvisitors.cxx
+++ b/starmath/qa/cppunit/test_nodetotextvisitors.cxx
@@ -436,12 +436,12 @@ void Test::parseandparseagain(const char *formula, const char *test_name)
     // parse 1
     OUString input = OUString::createFromAscii(formula);
     pNode1 = SmParser().ParseExpression(input);
-    pNode1->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    pNode1->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
     SmNodeToTextVisitor(pNode1, output1);
 
     // parse 2
     pNode2 = SmParser().ParseExpression(output1);
-    pNode2->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    pNode2->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
     SmNodeToTextVisitor(pNode2, output2);
 
     // compare
@@ -466,7 +466,7 @@ void Test::ParseAndCheck(const char *formula, const char * expected, const char
     // parse
     OUString sInput = OUString::createFromAscii(formula);
     pNode = SmParser().ParseExpression(sInput);
-    pNode->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    pNode->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
     SmNodeToTextVisitor(pNode, sOutput);
 
     // compare
@@ -491,13 +491,13 @@ void Test::ParseAndCompare(const char *formula1, const char *formula2, const cha
     // parse formula1
     OUString sInput1 = OUString(formula1, strlen(formula1), RTL_TEXTENCODING_UTF8);
     pNode1 = SmParser().ParseExpression(sInput1);
-    pNode1->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    pNode1->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
     SmNodeToTextVisitor(pNode1, sOutput1);
 
     // parse formula2
     OUString sInput2 = OUString(formula2, strlen(formula2), RTL_TEXTENCODING_UTF8);
     pNode2 = SmParser().ParseExpression(sInput2);
-    pNode2->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    pNode2->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
     SmNodeToTextVisitor(pNode2, sOutput2);
 
     CPPUNIT_ASSERT_EQUAL_MESSAGE(test_name, sOutput1, sOutput2);
@@ -519,7 +519,7 @@ void Test::testBinomInBinHor()
     // set up a binom (table) node
     sInput += "binom a b + c";
     pTree = SmParser().Parse(sInput);
-    pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
 
     SmCursor aCursor(pTree, xDocShRef.get());
     ScopedVclPtrInstance< VirtualDevice > pOutputDevice;
@@ -547,7 +547,7 @@ void Test::testBinVerInUnary()
     // set up a unary operator with operand
     sInput += "- 1";
     pTree = SmParser().Parse(sInput);
-    pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
 
     SmCursor aCursor(pTree, xDocShRef.get());
     ScopedVclPtrInstance< VirtualDevice > pOutputDevice;
@@ -574,7 +574,7 @@ void Test::testBinHorInSubSup()
 {
     // set up a blank formula
     SmNode* pTree = SmParser().Parse(OUString());
-    pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
 
     SmCursor aCursor(pTree, xDocShRef.get());
     ScopedVclPtrInstance< VirtualDevice > pOutputDevice;
@@ -602,7 +602,7 @@ void Test::testUnaryInMixedNumberAsNumerator()
     // set up a unary operator
     OUString sInput = "- 1";
     SmNode* pTree = SmParser().Parse(sInput);
-    pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    pTree->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
 
     SmCursor aCursor(pTree, xDocShRef.get());
     ScopedVclPtrInstance< VirtualDevice > pOutputDevice;
@@ -671,7 +671,7 @@ void Test::testParser()
     OUString sInput(u"{ \U0001D44E }"); // non-BMP Unicode
     OUString sExpected(u"\U0001D44E");
     std::unique_ptr<SmNode> pNode(SmParser().ParseExpression(sInput));
-    pNode->Prepare(xDocShRef->GetFormat(), *xDocShRef);
+    pNode->Prepare(xDocShRef->GetFormat(), *xDocShRef, 0);
     SmNodeToTextVisitor(pNode.get(), sOutput);
     CPPUNIT_ASSERT_EQUAL(sExpected, sOutput);
 }
diff --git a/starmath/source/ElementsDockingWindow.cxx b/starmath/source/ElementsDockingWindow.cxx
index 9ddf2d21f5c6..9ab977f489c0 100644
--- a/starmath/source/ElementsDockingWindow.cxx
+++ b/starmath/source/ElementsDockingWindow.cxx
@@ -525,7 +525,7 @@ void SmElementsControl::addElement(const OUString& aElementVisual, const OUStrin
 {
     std::unique_ptr<SmNode> pNode(SmParser().ParseExpression(aElementVisual));
 
-    pNode->Prepare(maFormat, *mpDocShell);
+    pNode->Prepare(maFormat, *mpDocShell, 0);
     pNode->SetSize(Fraction(10,8));
     pNode->Arrange(*this, maFormat);
 
diff --git a/starmath/source/cursor.cxx b/starmath/source/cursor.cxx
index 84c364bc17d6..033231a28b3a 100644
--- a/starmath/source/cursor.cxx
+++ b/starmath/source/cursor.cxx
@@ -528,7 +528,7 @@ void SmCursor::InsertSubSup(SmSubSup eSubSup) {
     } else {
         //Create a new place node
         pSubject = new SmPlaceNode();
-        pSubject->Prepare(mpDocShell->GetFormat(), *mpDocShell);
+        pSubject->Prepare(mpDocShell->GetFormat(), *mpDocShell, 0);
         it = pLineList->insert(it, pSubject);
         ++it;
         bPatchLine = true;  //We've modified the line it should be patched later.
@@ -637,7 +637,7 @@ void SmCursor::InsertBrackets(SmBracketType eBracketType) {
     SmBracebodyNode *pBody = new SmBracebodyNode(SmToken());
     pBody->SetSubNodes(pBodyNode, nullptr);
     pBrace->SetSubNodes(pLeft, pBody, pRight);
-    pBrace->Prepare(mpDocShell->GetFormat(), *mpDocShell);
+    pBrace->Prepare(mpDocShell->GetFormat(), *mpDocShell, 0);
 
     //Insert into line
     pLineList->insert(it, pBrace);
@@ -872,7 +872,7 @@ void SmCursor::InsertText(const OUString& aString)
     SmTextNode* pText = new SmTextNode(token, FNT_VARIABLE);
     pText->SetText(aString);
     pText->AdjustFontDesc();
-    pText->Prepare(mpDocShell->GetFormat(), *mpDocShell);
+    pText->Prepare(mpDocShell->GetFormat(), *mpDocShell, 0);
 
     SmNodeList* pList = new SmNodeList;
     pList->push_front(pText);
@@ -973,7 +973,7 @@ void SmCursor::InsertElement(SmFormulaElement element){
     assert(pNewNode);
 
     //Prepare the new node
-    pNewNode->Prepare(mpDocShell->GetFormat(), *mpDocShell);
+    pNewNode->Prepare(mpDocShell->GetFormat(), *mpDocShell, 0);
 
     //Insert new node
     SmNodeList* pList = new SmNodeList;
@@ -1000,7 +1000,7 @@ void SmCursor::InsertSpecial(const OUString& _aString)
     SmSpecialNode* pSpecial = new SmSpecialNode(token);
 
     //Prepare the special node
-    pSpecial->Prepare(mpDocShell->GetFormat(), *mpDocShell);
+    pSpecial->Prepare(mpDocShell->GetFormat(), *mpDocShell, 0);
 
     //Insert the node
     SmNodeList* pList = new SmNodeList;
@@ -1015,7 +1015,7 @@ void SmCursor::InsertCommandText(const OUString& aCommandText) {
     SmNode* pSubExpr = SmParser().ParseExpression(aCommandText);
 
     //Prepare the subtree
-    pSubExpr->Prepare(mpDocShell->GetFormat(), *mpDocShell);
+    pSubExpr->Prepare(mpDocShell->GetFormat(), *mpDocShell, 0);
 
     //Convert subtree to list
     SmNodeList* pLineList = NodeToList(pSubExpr);
@@ -1239,7 +1239,7 @@ void SmCursor::FinishEdit(SmNodeList* pLineList,
         SmBracebodyNode *pBody = new SmBracebodyNode(SmToken());
         pBody->SetSubNodes(pLine, nullptr);
         pBrace->SetSubNodes(pLeft, pBody, pRight);
-        pBrace->Prepare(mpDocShell->GetFormat(), *mpDocShell);
+        pBrace->Prepare(mpDocShell->GetFormat(), *mpDocShell, 0);
         pLine = pBrace;
         //TODO: Consider the following alternative behavior:
         //Consider the line: A + {B + C}^D lsub E
diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx
index 9466d6635674..399ff0dece69 100644
--- a/starmath/source/document.cxx
+++ b/starmath/source/document.cxx
@@ -251,7 +251,7 @@ void SmDocShell::ArrangeFormula()
                "Sm : falscher MapMode");
 
     const SmFormat &rFormat = GetFormat();
-    mpTree->Prepare(rFormat, *this);
+    mpTree->Prepare(rFormat, *this, 0);
 
     // format/draw formulas always from left to right,
     // and numbers should not be converted
diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx
index e48de29b8950..d316e9228023 100644
--- a/starmath/source/node.cxx
+++ b/starmath/source/node.cxx
@@ -217,8 +217,11 @@ void SmNode::PrepareAttributes()
 }
 
 
-void SmNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell)
+void SmNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth)
 {
+    if (nDepth > 2048)
+        throw std::range_error("parser depth limit");
+
     mbIsPhantom  = false;
     mnFlags      = FontChangeMask::None;
     mnAttributes = FontAttribute::None;
@@ -235,7 +238,7 @@ void SmNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell)
     GetFont().SetWeight(WEIGHT_NORMAL);
     GetFont().SetItalic(ITALIC_NONE);
 
-    ForEachNonNull(this, [&rFormat, &rDocShell](SmNode *pNode){pNode->Prepare(rFormat, rDocShell);});
+    ForEachNonNull(this, [&rFormat, &rDocShell, nDepth](SmNode *pNode){pNode->Prepare(rFormat, rDocShell, nDepth + 1);});
 }
 
 void SmNode::Move(const Point& rPosition)
@@ -545,9 +548,9 @@ long SmTableNode::GetFormulaBaseline() const
 /**************************************************************************/
 
 
-void SmLineNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell)
+void SmLineNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth)
 {
-    SmNode::Prepare(rFormat, rDocShell);
+    SmNode::Prepare(rFormat, rDocShell, nDepth);
 
     // Here we use the 'FNT_VARIABLE' font since it's ascent and descent in general fit better
     // to the rest of the formula compared to the 'FNT_MATH' font.
@@ -1823,10 +1826,10 @@ void SmFontNode::CreateTextFromNode(OUString &rText)
     rText += "} ";
 }
 
-void SmFontNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell)
+void SmFontNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth)
 {
     //! prepare subnodes first
-    SmNode::Prepare(rFormat, rDocShell);
+    SmNode::Prepare(rFormat, rDocShell, nDepth);
 
     int  nFnt = -1;
     switch (GetToken().eType)
@@ -2043,9 +2046,9 @@ SmTextNode::SmTextNode( const SmToken &rNodeToken, sal_uInt16 nFontDescP )
 {
 }
 
-void SmTextNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell)
+void SmTextNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth)
 {
-    SmNode::Prepare(rFormat, rDocShell);
+    SmNode::Prepare(rFormat, rDocShell, nDepth);
 
     // default setting for horizontal alignment of nodes with TTEXT
     // content is as alignl (cannot be done in Arrange since it would
@@ -2404,9 +2407,9 @@ void SmMathSymbolNode::AdaptToY(OutputDevice &rDev, sal_uLong nHeight)
 }
 
 
-void SmMathSymbolNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell)
+void SmMathSymbolNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth)
 {
-    SmNode::Prepare(rFormat, rDocShell);
+    SmNode::Prepare(rFormat, rDocShell, nDepth);
 
     GetFont() = rFormat.GetFont(GetFontDesc());
     // use same font size as is used for variables
@@ -2589,9 +2592,9 @@ SmSpecialNode::SmSpecialNode(const SmToken &rNodeToken)
 }
 
 
-void SmSpecialNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell)
+void SmSpecialNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth)
 {
-    SmNode::Prepare(rFormat, rDocShell);
+    SmNode::Prepare(rFormat, rDocShell, nDepth);
 
     const SmSym   *pSym;
     SmModule  *pp = SM_MOD();
@@ -2681,9 +2684,9 @@ void SmGlyphSpecialNode::Arrange(OutputDevice &rDev, const SmFormat &rFormat)
 /**************************************************************************/
 
 
-void SmPlaceNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell)
+void SmPlaceNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth)
 {
-    SmNode::Prepare(rFormat, rDocShell);
+    SmNode::Prepare(rFormat, rDocShell, nDepth);
 
     GetFont().SetColor(COL_GRAY);
     Flags() |= FontChangeMask::Color | FontChangeMask::Face | FontChangeMask::Italic;
@@ -2704,9 +2707,9 @@ void SmPlaceNode::Arrange(OutputDevice &rDev, const SmFormat &rFormat)
 /**************************************************************************/
 
 
-void SmErrorNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell)
+void SmErrorNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth)
 {
-    SmNode::Prepare(rFormat, rDocShell);
+    SmNode::Prepare(rFormat, rDocShell, nDepth);
 
     GetFont().SetColor(COL_RED);
     Flags() |= FontChangeMask::Phantom | FontChangeMask::Bold | FontChangeMask::Italic
@@ -2738,9 +2741,9 @@ void SmBlankNode::IncreaseBy(const SmToken &rToken, sal_uInt32 nMultiplyBy)
     }
 }
 
-void SmBlankNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell)
+void SmBlankNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, int nDepth)
 {
-    SmNode::Prepare(rFormat, rDocShell);
+    SmNode::Prepare(rFormat, rDocShell, nDepth);
 
     // Here it need/should not be the StarMath font, so that for the character
     // used in Arrange a normal (non-clipped) rectangle is generated


More information about the Libreoffice-commits mailing list