diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-12-09 14:59:17 +0000 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2015-12-10 16:14:35 +0100 |
commit | b3d4db8675f25b9361bc161e14f030e130b9c0f3 (patch) | |
tree | 45c27fabb65f960d2857d58e5a4e60d3e559e65f /lotuswordpro | |
parent | 54b97c6984fc6e93d9966ea305a158be4a3c6dd3 (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/20532
Reviewed-by: David Tardon <dtardon@redhat.com>
Tested-by: David Tardon <dtardon@redhat.com>
(cherry picked from commit 1ff36e1435dfb5e40ce4b651557b89c1f2c176eb)
Diffstat (limited to 'lotuswordpro')
-rw-r--r-- | lotuswordpro/source/filter/lwpcelllayout.cxx | 4 | ||||
-rw-r--r-- | lotuswordpro/source/filter/lwplayout.cxx | 196 | ||||
-rw-r--r-- | lotuswordpro/source/filter/lwplayout.hxx | 5 | ||||
-rw-r--r-- | lotuswordpro/source/filter/lwpobjid.cxx | 6 |
4 files changed, 99 insertions, 112 deletions
diff --git a/lotuswordpro/source/filter/lwpcelllayout.cxx b/lotuswordpro/source/filter/lwpcelllayout.cxx index 39717cd1d45c..c5ac6458a453 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 38634586e8ea..e4bb189931cf 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()) ) { |