summaryrefslogtreecommitdiff
path: root/lotuswordpro
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-12-09 14:59:17 +0000
committerMichael Stahl <mstahl@redhat.com>2015-12-10 15:52:54 +0000
commit209d18ac026f911c9fd8f359d7ab2cee5add65a4 (patch)
tree40292ef97eb00ebb46b6162f9a43df4586157b75 /lotuswordpro
parent986b0862236d16e6aaf5a083947a302729fe54b7 (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 (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> (cherry picked from commit 7e5b93bf127aeb83e4ab22e0701b731ec1934253) Change-Id: I093546793755f8a3a6e8a3c23fb8565ad27b75da Reviewed-on: https://gerrit.libreoffice.org/20533 Reviewed-by: David Tardon <dtardon@redhat.com> Tested-by: David Tardon <dtardon@redhat.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Reviewed-by: Michael Stahl <mstahl@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 449d28e6cfa7..13d7307cf8f1 100644
--- a/lotuswordpro/source/filter/lwpcelllayout.cxx
+++ b/lotuswordpro/source/filter/lwpcelllayout.cxx
@@ -270,7 +270,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());
@@ -657,7 +657,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 69e6b71fcf90..871e886c717d 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 b213bfc53b09..5e9b42ef1ca9 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 0962f375240b..2fd57e9c0fbf 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()) )
{