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

Caolán McNamara caolanm at redhat.com
Wed Dec 9 07:48:16 PST 2015


 lotuswordpro/source/filter/lwpcelllayout.cxx |    4 
 lotuswordpro/source/filter/lwplayout.cxx     |  196 ++++++++++++---------------
 lotuswordpro/source/filter/lwplayout.hxx     |    5 
 lotuswordpro/source/filter/lwpobjid.cxx      |    6 
 4 files changed, 99 insertions(+), 112 deletions(-)

New commits:
commit 1ff36e1435dfb5e40ce4b651557b89c1f2c176eb
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Dec 9 14:59:17 2015 +0000

    guard against styles based on themselves
    
    which leads to stack exhaustion when queries,
    
    make m_BasedOnStyle private and replace it with
    a call to GetBasedOnStyle which checks that
    the base style is not itself
    
    (cherry picked from commit da5e8ba393b8522a8f7501ebeb1e9a98d544a7ba)
    Reviewed-on: https://gerrit.libreoffice.org/20531
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 7e5b93bf127aeb83e4ab22e0701b731ec1934253)
    
    Change-Id: I093546793755f8a3a6e8a3c23fb8565ad27b75da
    Reviewed-on: https://gerrit.libreoffice.org/20532
    Reviewed-by: David Tardon <dtardon at redhat.com>
    Tested-by: David Tardon <dtardon at redhat.com>

diff --git a/lotuswordpro/source/filter/lwpcelllayout.cxx b/lotuswordpro/source/filter/lwpcelllayout.cxx
index 39717cd..c5ac645 100644
--- a/lotuswordpro/source/filter/lwpcelllayout.cxx
+++ b/lotuswordpro/source/filter/lwpcelllayout.cxx
@@ -269,7 +269,7 @@ void LwpCellLayout::ApplyFmtStyle(XFCellStyle *pCellStyle)
     if (!pLayoutNumerics)
     {
         // if current layout doesn't have format, go to based on layout
-        LwpCellLayout* pCellLayout = dynamic_cast<LwpCellLayout*>(m_BasedOnStyle.obj().get());
+        LwpCellLayout* pCellLayout = dynamic_cast<LwpCellLayout*>(GetBasedOnStyle().get());
         if (pCellLayout)
         {
             pLayoutNumerics = dynamic_cast<LwpLayoutNumerics*>(pCellLayout->GetNumericsObject().obj().get());
@@ -656,7 +656,7 @@ void LwpCellLayout::ApplyProtect(XFCell * pCell, LwpObjectID aTableID)
     else
     {
         // judge base on
-        LwpCellLayout * pBase = dynamic_cast<LwpCellLayout *>(m_BasedOnStyle.obj().get());
+        LwpCellLayout * pBase = dynamic_cast<LwpCellLayout *>(GetBasedOnStyle().get());
         if (pBase && pBase->IsProtected())
         {
             bProtected = true;
diff --git a/lotuswordpro/source/filter/lwplayout.cxx b/lotuswordpro/source/filter/lwplayout.cxx
index 3863458..e4bb189 100644
--- a/lotuswordpro/source/filter/lwplayout.cxx
+++ b/lotuswordpro/source/filter/lwplayout.cxx
@@ -648,6 +648,17 @@ void LwpMiddleLayout::Read()
     //end
 }
 
+rtl::Reference<LwpObject> LwpMiddleLayout::GetBasedOnStyle()
+{
+    rtl::Reference<LwpObject> xRet(m_BasedOnStyle.obj());
+    if (xRet.get() == this)
+    {
+        SAL_WARN("lwp", "style based on itself");
+        return rtl::Reference<LwpObject>();
+    }
+    return xRet;
+}
+
 #include "lwplaypiece.hxx"
 
 /**
@@ -660,10 +671,9 @@ LwpLayoutGeometry* LwpMiddleLayout::GetGeometry()
     {
         return ( dynamic_cast<LwpLayoutGeometry*> (m_LayGeometry.obj().get()) );
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay ? pLay->GetGeometry() : NULL;
+        return pLay->GetGeometry();
     }
     return NULL;
 }
@@ -708,11 +718,9 @@ bool LwpMiddleLayout::MarginsSameAsParent()
     {
         return LwpVirtualLayout::MarginsSameAsParent();
     }
-    if(!m_BasedOnStyle.IsNull())
+    if (LwpVirtualLayout* pLay = dynamic_cast<LwpVirtualLayout*> (GetBasedOnStyle().get()))
     {
-        LwpVirtualLayout* pLay = dynamic_cast<LwpVirtualLayout*> (m_BasedOnStyle.obj().get());
-        if (pLay)
-            pLay->MarginsSameAsParent();
+        pLay->MarginsSameAsParent();
     }
     return LwpVirtualLayout::MarginsSameAsParent();
 
@@ -747,7 +755,7 @@ double LwpMiddleLayout::GetMarginsValue(const sal_uInt8 &nWhichSide)
             return fValue;
         }
     }
-    LwpVirtualLayout* pStyle = dynamic_cast<LwpVirtualLayout*> (m_BasedOnStyle.obj().get());
+    LwpVirtualLayout* pStyle = dynamic_cast<LwpVirtualLayout*>(GetBasedOnStyle().get());
     if(pStyle)
     {
         fValue = pStyle->GetMarginsValue(nWhichSide);
@@ -773,7 +781,7 @@ double LwpMiddleLayout::GetExtMarginsValue(const sal_uInt8 &nWhichSide)
             return fValue;
         }
     }
-    LwpVirtualLayout* pStyle = dynamic_cast<LwpVirtualLayout*> (m_BasedOnStyle.obj().get());
+    LwpVirtualLayout* pStyle = dynamic_cast<LwpVirtualLayout*>(GetBasedOnStyle().get());
     if(pStyle)
     {
         fValue = pStyle->GetExtMarginsValue(nWhichSide);
@@ -794,10 +802,9 @@ LwpBorderStuff* LwpMiddleLayout::GetBorderStuff()
         LwpLayoutBorder* pLayoutBorder = dynamic_cast<LwpLayoutBorder*>(m_LayBorderStuff.obj().get());
         return pLayoutBorder ? &pLayoutBorder->GetBorderStuff() : NULL;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay ? pLay->GetBorderStuff() :  NULL;
+        return pLay->GetBorderStuff();
     }
     return NULL;
 }
@@ -815,10 +822,9 @@ LwpBackgroundStuff* LwpMiddleLayout::GetBackgroundStuff()
         LwpLayoutBackground* pLayoutBackground = dynamic_cast<LwpLayoutBackground*>(m_LayBackgroundStuff.obj().get());
         return pLayoutBackground ? &pLayoutBackground->GetBackgoudStuff() : NULL;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay ? pLay->GetBackgroundStuff() : NULL;
+        return pLay->GetBackgroundStuff();
     }
     return NULL;
 }
@@ -925,10 +931,9 @@ LwpTabOverride* LwpMiddleLayout::GetTabOverride()
         }
         return NULL;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( GetBasedOnStyle().get() ))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay ? pLay->GetTabOverride() : NULL;
+        return pLay->GetTabOverride();
     }
     return NULL;
 }
@@ -943,8 +948,9 @@ sal_uInt16 LwpMiddleLayout::GetScaleMode()
 {
     if ((m_nOverrideFlag & OVER_SCALING) && m_LayScale.obj().is())
         return GetLayoutScale()->GetScaleMode();
-    else if (m_BasedOnStyle.obj().is())
-        return dynamic_cast<LwpMiddleLayout*>(m_BasedOnStyle.obj().get())->GetScaleMode();
+    rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
+    if (xBase.is())
+        return dynamic_cast<LwpMiddleLayout*>(xBase.get())->GetScaleMode();
     else
         return (LwpLayoutScale::FIT_IN_FRAME | LwpLayoutScale::MAINTAIN_ASPECT_RATIO);
 }
@@ -954,8 +960,9 @@ sal_uInt16 LwpMiddleLayout::GetScaleTile()
     if ((m_nOverrideFlag & OVER_SCALING) && m_LayScale.obj().is())
         return (GetLayoutScale()->GetPlacement() & LwpLayoutScale::TILED)
             ? 1 : 0;
-    else if (m_BasedOnStyle.obj().is())
-        return dynamic_cast<LwpMiddleLayout*>(m_BasedOnStyle.obj().get())->GetScaleTile();
+    rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
+    if (xBase.is())
+        return dynamic_cast<LwpMiddleLayout*>(xBase.get())->GetScaleTile();
     else
         return 0;
 }
@@ -965,8 +972,9 @@ sal_uInt16 LwpMiddleLayout::GetScaleCenter()
     if ((m_nOverrideFlag & OVER_SCALING) && m_LayScale.obj().is())
         return (GetLayoutScale()->GetPlacement() & LwpLayoutScale::CENTERED)
             ? 1 : 0;
-    else if (m_BasedOnStyle.obj().is())
-        return dynamic_cast<LwpMiddleLayout*>(m_BasedOnStyle.obj().get())->GetScaleCenter();
+    rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
+    if (xBase.is())
+        return dynamic_cast<LwpMiddleLayout*>(xBase.get())->GetScaleCenter();
     else
         return 0;
 }
@@ -975,8 +983,9 @@ sal_uInt32 LwpMiddleLayout::GetScalePercentage()
 {
     if ((m_nOverrideFlag & OVER_SCALING) && m_LayScale.obj().is())
         return GetLayoutScale()->GetScalePercentage()/10;//m_nScalePercentage 1000 = 100%
-    else if (m_BasedOnStyle.obj().is())
-        return dynamic_cast<LwpMiddleLayout*>(m_BasedOnStyle.obj().get())->GetScalePercentage();
+    rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
+    if (xBase.is())
+        return dynamic_cast<LwpMiddleLayout*>(xBase.get())->GetScalePercentage();
     else
         return 100;
 }
@@ -985,8 +994,9 @@ double LwpMiddleLayout::GetScaleWidth()
 {
     if ((m_nOverrideFlag & OVER_SCALING) && m_LayScale.obj().is())
         return LwpTools::ConvertFromUnits(GetLayoutScale()->GetScaleWidth());
-    else if (m_BasedOnStyle.obj().is())
-        return dynamic_cast<LwpMiddleLayout*>(m_BasedOnStyle.obj().get())->GetScaleWidth();
+    rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
+    if (xBase.is())
+        return dynamic_cast<LwpMiddleLayout*>(xBase.get())->GetScaleWidth();
     else
         return 0;
 }
@@ -995,8 +1005,9 @@ double LwpMiddleLayout::GetScaleHeight()
 {
     if ((m_nOverrideFlag & OVER_SCALING) && m_LayScale.obj().is())
         return LwpTools::ConvertFromUnits(GetLayoutScale()->GetScaleHeight());
-    else if (m_BasedOnStyle.obj().is())
-        return dynamic_cast<LwpMiddleLayout*>(m_BasedOnStyle.obj().get())->GetScaleHeight();
+    rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
+    if (xBase.is())
+        return dynamic_cast<LwpMiddleLayout*>(xBase.get())->GetScaleHeight();
     else
         return 0;
 }
@@ -1051,9 +1062,10 @@ bool LwpMiddleLayout::IsSizeRightToContainer()
                         << SHIFT_RIGHT))
         == ((LAY_USEDIRECTION | LAY_TOCONTAINER | LAY_AUTOSIZE) << SHIFT_RIGHT);
     }
-    else if (m_BasedOnStyle.obj().is())
+    rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
+    if (xBase.is())
     {
-        LwpMiddleLayout * pLayout = dynamic_cast<LwpMiddleLayout *>(m_BasedOnStyle.obj().get());
+        LwpMiddleLayout * pLayout = dynamic_cast<LwpMiddleLayout *>(xBase.get());
         return pLayout && pLayout->IsSizeRightToContainer();
     }
     else
@@ -1070,9 +1082,10 @@ bool LwpMiddleLayout::IsSizeRightToContent()
                             << SHIFT_RIGHT))
                 == ((LAY_USEDIRECTION | LAY_AUTOSIZE) << SHIFT_RIGHT);
     }
-    else if (m_BasedOnStyle.obj().is())
+    rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
+    if (xBase.is())
     {
-        LwpMiddleLayout * pLayout = dynamic_cast<LwpMiddleLayout *>(m_BasedOnStyle.obj().get());
+        LwpMiddleLayout * pLayout = dynamic_cast<LwpMiddleLayout *>(xBase.get());
         return pLayout && pLayout->IsSizeRightToContent();
     }
     else
@@ -1162,10 +1175,9 @@ bool LwpMiddleLayout::IsAutoGrow()
             ((LAY_AUTOGROW << SHIFT_UP) | (LAY_AUTOGROW << SHIFT_DOWN) |
             (LAY_AUTOGROW << SHIFT_RIGHT) | (LAY_AUTOGROW << SHIFT_LEFT))) != 0;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay && pLay->IsAutoGrow();
+        return pLay->IsAutoGrow();
     }
     return LwpVirtualLayout::IsAutoGrow();
 }
@@ -1180,10 +1192,9 @@ bool LwpMiddleLayout::IsAutoGrowDown()
     {
         return (m_nDirection & (LAY_AUTOGROW << SHIFT_DOWN)) != 0;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay && pLay->IsAutoGrowDown();
+        return pLay->IsAutoGrowDown();
     }
     return LwpVirtualLayout::IsAutoGrowDown();
 }
@@ -1198,10 +1209,9 @@ bool LwpMiddleLayout::IsAutoGrowUp()
     {
         return (m_nDirection & (LAY_AUTOGROW << SHIFT_UP)) != 0;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay && pLay->IsAutoGrowUp();
+        return pLay->IsAutoGrowUp();
     }
     return LwpVirtualLayout::IsAutoGrowUp();
 }
@@ -1216,11 +1226,9 @@ bool LwpMiddleLayout::IsAutoGrowLeft()
     {
         return (m_nDirection & (LAY_AUTOGROW << SHIFT_LEFT)) != 0;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        if (pLay)
-            return pLay->IsAutoGrowLeft();
+        return pLay->IsAutoGrowLeft();
     }
     return LwpVirtualLayout::IsAutoGrowLeft();
 }
@@ -1235,10 +1243,9 @@ bool LwpMiddleLayout::IsAutoGrowRight()
     {
         return (m_nDirection & (LAY_AUTOGROW << SHIFT_RIGHT)) != 0;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> (GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay && pLay->IsAutoGrowRight();
+        return pLay->IsAutoGrowRight();
     }
     return LwpVirtualLayout::IsAutoGrowRight();
 }
@@ -1256,11 +1263,9 @@ sal_uInt8 LwpMiddleLayout::GetContentOrientation()
         if (pLayGeometry)
             return pLayGeometry->GetContentOrientation();
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        if (pLay)
-            return pLay->GetContentOrientation();
+        return pLay->GetContentOrientation();
     }
     return LwpVirtualLayout::GetContentOrientation();
 }
@@ -1291,11 +1296,9 @@ bool LwpMiddleLayout::HonorProtection()
             }
         }
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> (GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        if (pLay)
-            return pLay->HonorProtection();
+        return pLay->HonorProtection();
     }
 
     return LwpVirtualLayout::HonorProtection();
@@ -1312,10 +1315,9 @@ bool LwpMiddleLayout::IsProtected()
     {
         bProtected = (m_nAttributes & STYLE_PROTECTED)!=0;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> (GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        bProtected = pLay && pLay->IsProtected();
+        bProtected = pLay->IsProtected();
     }
     else
         bProtected = LwpVirtualLayout::IsProtected();
@@ -1438,10 +1440,9 @@ bool LwpMiddleLayout::GetUsePrinterSettings()
     {
         return (m_nAttributes3 & STYLE3_USEPRINTERSETTINGS) != 0;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> (GetBasedOnStyle().get()))
     {
-        LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay && pLay->GetUsePrinterSettings();
+        return pLay->GetUsePrinterSettings();
     }
     return false;
 }
@@ -1518,8 +1519,8 @@ sal_uInt16 LwpLayout::GetNumCols()
         }
     }
 
-    LwpVirtualLayout* pStyle = dynamic_cast<LwpVirtualLayout*> (m_BasedOnStyle.obj().get());
-    if(pStyle)
+    LwpVirtualLayout* pStyle = dynamic_cast<LwpVirtualLayout*> (GetBasedOnStyle().get());
+    if (pStyle)
     {
         return pStyle->GetNumCols();
     }
@@ -1543,8 +1544,8 @@ double LwpLayout::GetColWidth(sal_uInt16 nIndex)
         }
     }
 
-    LwpVirtualLayout* pStyle = dynamic_cast<LwpVirtualLayout*> (m_BasedOnStyle.obj().get());
-    if(pStyle)
+    LwpVirtualLayout* pStyle = dynamic_cast<LwpVirtualLayout*>(GetBasedOnStyle().get());
+    if (pStyle)
     {
         return pStyle->GetColWidth(nIndex);
     }
@@ -1568,8 +1569,8 @@ double LwpLayout::GetColGap(sal_uInt16 nIndex)
         }
     }
 
-    LwpVirtualLayout* pStyle = dynamic_cast<LwpVirtualLayout*> (m_BasedOnStyle.obj().get());
-    if(pStyle)
+    LwpVirtualLayout* pStyle = dynamic_cast<LwpVirtualLayout*>(GetBasedOnStyle().get());
+    if (pStyle)
     {
         return pStyle->GetColGap(nIndex);
     }
@@ -1713,10 +1714,9 @@ sal_uInt16 LwpLayout::GetUsePage()
         else
             return 0;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpLayout* pLay = dynamic_cast<LwpLayout*>(GetBasedOnStyle().get()))
     {
-        LwpLayout* pLay = dynamic_cast<LwpLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay ? pLay->GetUsePage() : 0;
+        return pLay->GetUsePage();
     }
     return 0;
 }
@@ -1731,10 +1731,9 @@ LwpUseWhen* LwpLayout::VirtualGetUseWhen()
     {
         return m_pUseWhen;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpLayout* pLay = dynamic_cast<LwpLayout*>(GetBasedOnStyle().get()))
     {
-        LwpLayout* pLay = dynamic_cast<LwpLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay ? pLay->VirtualGetUseWhen() : NULL;
+        return pLay->VirtualGetUseWhen();
     }
     return LwpVirtualLayout::VirtualGetUseWhen();
 }
@@ -1753,11 +1752,9 @@ bool LwpLayout::IsUseOnAllPages()
         else
             return false;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpLayout* pLay = dynamic_cast<LwpLayout*>(GetBasedOnStyle().get()))
     {
-        LwpLayout* pLay = dynamic_cast<LwpLayout*> ( m_BasedOnStyle.obj().get() );
-        if (pLay)
-            return pLay->IsUseOnAllPages();
+        return pLay->IsUseOnAllPages();
     }
     return LwpVirtualLayout::IsUseOnAllPages();
 }
@@ -1776,11 +1773,9 @@ bool LwpLayout::IsUseOnAllEvenPages()
         else
             return false;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpLayout* pLay = dynamic_cast<LwpLayout*>(GetBasedOnStyle().get()))
     {
-        LwpLayout* pLay = dynamic_cast<LwpLayout*> ( m_BasedOnStyle.obj().get() );
-        if (pLay)
-            return pLay->IsUseOnAllEvenPages();
+        return pLay->IsUseOnAllEvenPages();
     }
     return LwpVirtualLayout::IsUseOnAllEvenPages();
 }
@@ -1799,11 +1794,9 @@ bool LwpLayout::IsUseOnAllOddPages()
         else
             return false;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpLayout* pLay = dynamic_cast<LwpLayout*>(GetBasedOnStyle().get()))
     {
-        LwpLayout* pLay = dynamic_cast<LwpLayout*> ( m_BasedOnStyle.obj().get() );
-        if (pLay)
-            return pLay->IsUseOnAllOddPages();
+        return pLay->IsUseOnAllOddPages();
     }
     return LwpVirtualLayout::IsUseOnAllOddPages();
 }
@@ -1822,11 +1815,9 @@ bool LwpLayout::IsUseOnPage()
         else
             return false;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpLayout* pLay = dynamic_cast<LwpLayout*>(GetBasedOnStyle().get()))
     {
-        LwpLayout* pLay = dynamic_cast<LwpLayout*> ( m_BasedOnStyle.obj().get() );
-        if (pLay)
-            return pLay->IsUseOnPage();
+        return pLay->IsUseOnPage();
     }
     return LwpVirtualLayout::IsUseOnPage();
 }
@@ -1844,10 +1835,9 @@ LwpShadow* LwpLayout::GetShadow()
         LwpLayoutShadow* pLayoutShadow = dynamic_cast<LwpLayoutShadow*>(m_LayShadow.obj().get());
         return pLayoutShadow ? &pLayoutShadow->GetShadow() : NULL;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpLayout* pLay = dynamic_cast<LwpLayout*>(GetBasedOnStyle().get()))
     {
-        LwpLayout* pLay = dynamic_cast<LwpLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay ? pLay->GetShadow() : NULL;
+        return pLay->GetShadow();
     }
     return NULL;
 }
@@ -1991,11 +1981,9 @@ sal_uInt8 LwpPlacableLayout::GetWrapType()
     {
         return m_nWrapType;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpPlacableLayout* pLay = dynamic_cast<LwpPlacableLayout*>(GetBasedOnStyle().get()))
     {
-        LwpPlacableLayout* pLay = dynamic_cast<LwpPlacableLayout*> ( m_BasedOnStyle.obj().get() );
-        if (pLay)
-            return pLay->GetWrapType();
+        return pLay->GetWrapType();
     }
     return LAY_WRAP_AROUND;
 }
@@ -2014,10 +2002,9 @@ LwpLayoutRelativity* LwpPlacableLayout::GetRelativityPiece()
             return dynamic_cast<LwpLayoutRelativity*>(m_LayRelativity.obj().get());
         }
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpPlacableLayout* pLay = dynamic_cast<LwpPlacableLayout*>(GetBasedOnStyle().get()))
     {
-        LwpPlacableLayout* pLay = dynamic_cast<LwpPlacableLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay ? pLay->GetRelativityPiece() : NULL;
+        return pLay->GetRelativityPiece();
     }
     return NULL;
 }
@@ -2056,10 +2043,9 @@ sal_Int32 LwpPlacableLayout::GetBaseLineOffset()
     {
         return m_nBaseLineOffset;
     }
-    else if( !m_BasedOnStyle.IsNull() )
+    else if (LwpPlacableLayout* pLay = dynamic_cast<LwpPlacableLayout*>(GetBasedOnStyle().get()))
     {
-        LwpPlacableLayout* pLay = dynamic_cast<LwpPlacableLayout*> ( m_BasedOnStyle.obj().get() );
-        return pLay ? pLay->GetBaseLineOffset() : 0;
+        return pLay->GetBaseLineOffset();
     }
     return 0;
 
diff --git a/lotuswordpro/source/filter/lwplayout.hxx b/lotuswordpro/source/filter/lwplayout.hxx
index b213bfc..5e9b42e 100644
--- a/lotuswordpro/source/filter/lwplayout.hxx
+++ b/lotuswordpro/source/filter/lwplayout.hxx
@@ -328,6 +328,8 @@ public:
 
 protected:
     void Read() SAL_OVERRIDE;
+private:
+    LwpObjectID m_BasedOnStyle;
 protected:
     enum
     {
@@ -336,8 +338,7 @@ protected:
     };
 
     LwpObjectID m_Content;
-    LwpObjectID m_BasedOnStyle;
-
+    rtl::Reference<LwpObject> GetBasedOnStyle();
     LwpObjectID     m_TabPiece;
     LwpLayoutStyle* m_pStyleStuff;
     LwpLayoutMisc*  m_pMiscStuff;
diff --git a/lotuswordpro/source/filter/lwpobjid.cxx b/lotuswordpro/source/filter/lwpobjid.cxx
index 0962f37..2fd57e9 100644
--- a/lotuswordpro/source/filter/lwpobjid.cxx
+++ b/lotuswordpro/source/filter/lwpobjid.cxx
@@ -187,12 +187,12 @@ sal_uInt32 LwpObjectID::DiskSizeIndexed() const
 */
 rtl::Reference<LwpObject> LwpObjectID::obj(VO_TYPE tag) const
 {
-    LwpGlobalMgr* pGlobal = LwpGlobalMgr::GetInstance();
-    LwpObjectFactory* pObjMgr = pGlobal->GetLwpObjFactory();
-    if(IsNull())
+    if (IsNull())
     {
         return NULL;
     }
+    LwpGlobalMgr* pGlobal = LwpGlobalMgr::GetInstance();
+    LwpObjectFactory* pObjMgr = pGlobal->GetLwpObjFactory();
     rtl::Reference<LwpObject> pObj = pObjMgr->QueryObject(*this);
     if( tag!=VO_INVALID &&  (pObj.is()) )
     {


More information about the Libreoffice-commits mailing list