[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - lotuswordpro/source

Caolán McNamara caolanm at redhat.com
Thu Dec 31 23:30:41 PST 2015


 lotuswordpro/source/filter/lwplayout.cxx |   11 +++++++----
 lotuswordpro/source/filter/lwplayout.hxx |   12 +++++++++++-
 2 files changed, 18 insertions(+), 5 deletions(-)

New commits:
commit ab8c84b1b1d14adc0cabbc063ba8a5132a540201
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Dec 28 14:43:50 2015 +0000

    guard against infinite recursion in GetGeometry
    
    (cherry picked from commit 9ec011f6874cf663db54d0420c41d9299e4ed882)
    (cherry picked from commit 02c113a3ab57d7880bb1f794e192fb42aea078e1)
    
    Change-Id: I901f77f5846512cb528f2e14bbc50409fa29bef2
    Reviewed-on: https://gerrit.libreoffice.org/20988
    Reviewed-by: David Tardon <dtardon at redhat.com>
    Tested-by: David Tardon <dtardon at redhat.com>

diff --git a/lotuswordpro/source/filter/lwplayout.cxx b/lotuswordpro/source/filter/lwplayout.cxx
index a0d3a510..53e1261 100644
--- a/lotuswordpro/source/filter/lwplayout.cxx
+++ b/lotuswordpro/source/filter/lwplayout.cxx
@@ -585,9 +585,12 @@ void LwpLayoutMisc::Read(LwpObjectStream* pStrm)
 }
 
 LwpMiddleLayout::LwpMiddleLayout( LwpObjectHeader &objHdr, LwpSvStream* pStrm )
-    : LwpVirtualLayout(objHdr, pStrm),
-      m_pStyleStuff(new LwpLayoutStyle), m_pMiscStuff(new LwpLayoutMisc)
-{}
+    : LwpVirtualLayout(objHdr, pStrm)
+    , m_pStyleStuff(new LwpLayoutStyle)
+    , m_pMiscStuff(new LwpLayoutMisc)
+    , m_bGettingGeometry(false)
+{
+}
 
 LwpMiddleLayout::~LwpMiddleLayout()
 {
@@ -663,7 +666,7 @@ rtl::Reference<LwpObject> LwpMiddleLayout::GetBasedOnStyle()
 * @descr:   Get the geometry of current layout
 *
 */
-LwpLayoutGeometry* LwpMiddleLayout::GetGeometry()
+LwpLayoutGeometry* LwpMiddleLayout::Geometry()
 {
     if( !m_LayGeometry.IsNull() )
     {
diff --git a/lotuswordpro/source/filter/lwplayout.hxx b/lotuswordpro/source/filter/lwplayout.hxx
index 749513b..f540aec 100644
--- a/lotuswordpro/source/filter/lwplayout.hxx
+++ b/lotuswordpro/source/filter/lwplayout.hxx
@@ -321,7 +321,15 @@ public:
     virtual bool MarginsSameAsParent() SAL_OVERRIDE;
     virtual double MarginsValue(const sal_uInt8& nWhichSide) SAL_OVERRIDE;
     virtual double GetExtMarginsValue(const sal_uInt8& nWhichSide) SAL_OVERRIDE;
-    LwpLayoutGeometry* GetGeometry();
+    LwpLayoutGeometry* GetGeometry()
+    {
+        if (m_bGettingGeometry)
+            throw std::runtime_error("recursion in layout");
+        m_bGettingGeometry = true;
+        auto pRet = Geometry();
+        m_bGettingGeometry = false;
+        return pRet;
+    }
     double GetGeometryHeight();
     double GetGeometryWidth();
     LwpBorderStuff* GetBorderStuff();
@@ -369,6 +377,7 @@ protected:
     void Read() SAL_OVERRIDE;
 private:
     LwpObjectID m_BasedOnStyle;
+    LwpLayoutGeometry* Geometry();
 protected:
     enum
     {
@@ -387,6 +396,7 @@ protected:
     LwpObjectID     m_LayBorderStuff;
     LwpObjectID     m_LayBackgroundStuff;
     LwpObjectID     m_LayExtBorderStuff;
+    bool            m_bGettingGeometry;
 public:
     LwpObjectID& GetContent() { return m_Content; }
     LwpTabOverride* GetTabOverride();


More information about the Libreoffice-commits mailing list