summaryrefslogtreecommitdiff
path: root/lotuswordpro
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-12-09 14:59:17 +0000
committerCaolán McNamara <caolanm@redhat.com>2015-12-09 15:13:07 +0000
commit7e5b93bf127aeb83e4ab22e0701b731ec1934253 (patch)
tree2cd27c7e8207e27e3125dff97c27215b48d3c565 /lotuswordpro
parent03d61b0702edfaf5a2edcbf529f8b82c6463f9f3 (diff)
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 Change-Id: I093546793755f8a3a6e8a3c23fb8565ad27b75da (cherry picked from commit da5e8ba393b8522a8f7501ebeb1e9a98d544a7ba) Reviewed-on: https://gerrit.libreoffice.org/20531 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'lotuswordpro')
-rw-r--r--lotuswordpro/source/filter/lwpcelllayout.cxx4
-rw-r--r--lotuswordpro/source/filter/lwplayout.cxx196
-rw-r--r--lotuswordpro/source/filter/lwplayout.hxx5
-rw-r--r--lotuswordpro/source/filter/lwpobjid.cxx6
4 files changed, 99 insertions, 112 deletions
diff --git a/lotuswordpro/source/filter/lwpcelllayout.cxx b/lotuswordpro/source/filter/lwpcelllayout.cxx
index cd61beac6df5..635e4861f538 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());
@@ -654,7 +654,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 7f031d2b7e96..7c8aff0e33ff 100644
--- a/lotuswordpro/source/filter/lwplayout.cxx
+++ b/lotuswordpro/source/filter/lwplayout.cxx
@@ -622,6 +622,17 @@ void LwpMiddleLayout::Read()
}
}
+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"
/**
@@ -634,10 +645,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() : nullptr;
+ return pLay->GetGeometry();
}
return nullptr;
}
@@ -682,11 +692,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();
@@ -721,7 +729,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);
@@ -747,7 +755,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);
@@ -765,10 +773,9 @@ LwpBorderStuff* LwpMiddleLayout::GetBorderStuff()
LwpLayoutBorder* pLayoutBorder = dynamic_cast<LwpLayoutBorder*>(m_LayBorderStuff.obj().get());
return pLayoutBorder ? &pLayoutBorder->GetBorderStuff() : nullptr;
}
- 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() : nullptr;
+ return pLay->GetBorderStuff();
}
return nullptr;
}
@@ -783,10 +790,9 @@ LwpBackgroundStuff* LwpMiddleLayout::GetBackgroundStuff()
LwpLayoutBackground* pLayoutBackground = dynamic_cast<LwpLayoutBackground*>(m_LayBackgroundStuff.obj().get());
return pLayoutBackground ? &pLayoutBackground->GetBackgoudStuff() : nullptr;
}
- 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() : nullptr;
+ return pLay->GetBackgroundStuff();
}
return nullptr;
}
@@ -881,10 +887,9 @@ LwpTabOverride* LwpMiddleLayout::GetTabOverride()
}
return nullptr;
}
- 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() : nullptr;
+ return pLay->GetTabOverride();
}
return nullptr;
}
@@ -896,8 +901,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);
}
@@ -907,8 +913,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;
}
@@ -918,8 +925,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;
}
@@ -928,8 +936,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;
}
@@ -938,8 +947,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;
}
@@ -948,8 +958,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;
}
@@ -1004,9 +1015,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
@@ -1023,9 +1035,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
@@ -1115,10 +1128,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();
}
@@ -1133,10 +1145,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();
}
@@ -1151,10 +1162,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();
}
@@ -1169,11 +1179,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();
}
@@ -1188,10 +1196,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();
}
@@ -1209,11 +1216,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();
}
@@ -1244,11 +1249,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();
@@ -1265,10 +1268,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();
@@ -1391,10 +1393,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;
}
@@ -1470,8 +1471,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();
}
@@ -1495,8 +1496,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);
}
@@ -1520,8 +1521,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);
}
@@ -1663,10 +1664,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;
}
@@ -1681,10 +1681,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() : nullptr;
+ return pLay->VirtualGetUseWhen();
}
return LwpVirtualLayout::VirtualGetUseWhen();
}
@@ -1703,11 +1702,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();
}
@@ -1726,11 +1723,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();
}
@@ -1749,11 +1744,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();
}
@@ -1772,11 +1765,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();
}
@@ -1791,10 +1782,9 @@ LwpShadow* LwpLayout::GetShadow()
LwpLayoutShadow* pLayoutShadow = dynamic_cast<LwpLayoutShadow*>(m_LayShadow.obj().get());
return pLayoutShadow ? &pLayoutShadow->GetShadow() : nullptr;
}
- 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() : nullptr;
+ return pLay->GetShadow();
}
return nullptr;
}
@@ -1930,11 +1920,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;
}
@@ -1950,10 +1938,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() : nullptr;
+ return pLay->GetRelativityPiece();
}
return nullptr;
}
@@ -1992,10 +1979,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 a5e8c264e9d1..1ed947404133 100644
--- a/lotuswordpro/source/filter/lwplayout.hxx
+++ b/lotuswordpro/source/filter/lwplayout.hxx
@@ -321,6 +321,8 @@ public:
protected:
void Read() override;
+private:
+ LwpObjectID m_BasedOnStyle;
protected:
enum
{
@@ -329,8 +331,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 d7fe28db026f..dd4dbe9265b7 100644
--- a/lotuswordpro/source/filter/lwpobjid.cxx
+++ b/lotuswordpro/source/filter/lwpobjid.cxx
@@ -183,12 +183,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 nullptr;
}
+ LwpGlobalMgr* pGlobal = LwpGlobalMgr::GetInstance();
+ LwpObjectFactory* pObjMgr = pGlobal->GetLwpObjFactory();
rtl::Reference<LwpObject> pObj = pObjMgr->QueryObject(*this);
if( tag!=VO_INVALID && (pObj.is()) )
{