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

Caolán McNamara caolanm at redhat.com
Fri Mar 11 10:39:52 UTC 2016


 lotuswordpro/qa/cppunit/data/fail/recurse-1.lwp |binary
 lotuswordpro/source/filter/lwplayout.cxx        |    5 +++--
 lotuswordpro/source/filter/lwplayout.hxx        |   16 +++++++++++++---
 3 files changed, 16 insertions(+), 5 deletions(-)

New commits:
commit bcecf9b13b7eee0e7c60a6827a310f8b38d13f69
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Mar 11 10:38:46 2016 +0000

    tweat ExtMargins with same recurse protection as Margins
    
    Change-Id: I24640971ea6ca89878043966293492a991f01008

diff --git a/lotuswordpro/qa/cppunit/data/fail/recurse-1.lwp b/lotuswordpro/qa/cppunit/data/fail/recurse-1.lwp
new file mode 100644
index 0000000..ffc7a44
Binary files /dev/null and b/lotuswordpro/qa/cppunit/data/fail/recurse-1.lwp differ
diff --git a/lotuswordpro/source/filter/lwplayout.cxx b/lotuswordpro/source/filter/lwplayout.cxx
index 17eb43d..e5c8c1d 100644
--- a/lotuswordpro/source/filter/lwplayout.cxx
+++ b/lotuswordpro/source/filter/lwplayout.cxx
@@ -78,6 +78,7 @@ LwpVirtualLayout::LwpVirtualLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm)
     , m_bGettingHasProtection(false)
     , m_bGettingIsProtected(false)
     , m_bGettingMarginsValue(false)
+    , m_bGettingExtMarginsValue(false)
     , m_nAttributes(0)
     , m_nAttributes2(0)
     , m_nAttributes3(0)
@@ -750,7 +751,7 @@ double LwpMiddleLayout::MarginsValue(const sal_uInt8 &nWhichSide)
  * @param:
  * @return:
 */
-double LwpMiddleLayout::GetExtMarginsValue(const sal_uInt8 &nWhichSide)
+double LwpMiddleLayout::ExtMarginsValue(const sal_uInt8 &nWhichSide)
 {
     double fValue = 0;
     if(m_nOverrideFlag & OVER_MARGINS)
@@ -768,7 +769,7 @@ double LwpMiddleLayout::GetExtMarginsValue(const sal_uInt8 &nWhichSide)
         fValue = pStyle->GetExtMarginsValue(nWhichSide);
         return fValue;
     }
-    return LwpVirtualLayout::GetExtMarginsValue(nWhichSide);
+    return LwpVirtualLayout::ExtMarginsValue(nWhichSide);
 }
 /**
  * @descr:  Get the LwpBorderStuff object according to m_LayBorderStuff id.
diff --git a/lotuswordpro/source/filter/lwplayout.hxx b/lotuswordpro/source/filter/lwplayout.hxx
index 0456cfa..991dfac 100644
--- a/lotuswordpro/source/filter/lwplayout.hxx
+++ b/lotuswordpro/source/filter/lwplayout.hxx
@@ -99,7 +99,6 @@ public:
     inline virtual sal_uInt16 GetNumCols(){return 1;}
     virtual double GetColWidth(sal_uInt16 nIndex);
     virtual double GetColGap(sal_uInt16 nIndex);
-    virtual double GetExtMarginsValue(const sal_uInt8& /*nWhichSide*/){return 0;}
     virtual bool IsAutoGrow(){ return false;}
     virtual bool IsAutoGrowUp(){ return false;}
     virtual bool IsAutoGrowDown(){ return false;}
@@ -154,6 +153,15 @@ public:
         m_bGettingMarginsValue = false;
         return fRet;
     }
+    double GetExtMarginsValue(const sal_uInt8& nWhichSide)
+    {
+        if (m_bGettingExtMarginsValue)
+            throw std::runtime_error("recursion in layout");
+        m_bGettingExtMarginsValue = true;
+        auto fRet = ExtMarginsValue(nWhichSide);
+        m_bGettingExtMarginsValue = false;
+        return fRet;
+    }
     OUString GetStyleName(){ return m_StyleName;}
     bool IsComplex();
     virtual bool IsAnchorPage(){ return false;}
@@ -207,6 +215,7 @@ protected:
     virtual bool HonorProtection();
     virtual bool IsProtected();
     virtual double MarginsValue(const sal_uInt8& /*nWhichSide*/){return 0;}
+    virtual double ExtMarginsValue(const sal_uInt8& /*nWhichSide*/){return 0;}
     virtual bool MarginsSameAsParent();
 protected:
     bool m_bGettingHonorProtection;
@@ -214,6 +223,7 @@ protected:
     bool m_bGettingHasProtection;
     bool m_bGettingIsProtected;
     bool m_bGettingMarginsValue;
+    bool m_bGettingExtMarginsValue;
     sal_uInt32 m_nAttributes;
     sal_uInt32 m_nAttributes2;
     sal_uInt32 m_nAttributes3;
@@ -323,8 +333,6 @@ class LwpMiddleLayout : public LwpVirtualLayout
 public:
     LwpMiddleLayout( LwpObjectHeader &objHdr, LwpSvStream* pStrm );
     virtual ~LwpMiddleLayout();
-    virtual double MarginsValue(const sal_uInt8& nWhichSide) override;
-    virtual double GetExtMarginsValue(const sal_uInt8& nWhichSide) override;
     LwpLayoutGeometry* GetGeometry()
     {
         if (m_bGettingGeometry)
@@ -379,6 +387,8 @@ public:
 protected:
     void Read() override;
     virtual bool MarginsSameAsParent() override;
+    virtual double MarginsValue(const sal_uInt8& nWhichSide) override;
+    virtual double ExtMarginsValue(const sal_uInt8& nWhichSide) override;
 private:
     LwpObjectID m_BasedOnStyle;
     LwpLayoutGeometry* Geometry();


More information about the Libreoffice-commits mailing list