[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - lotuswordpro/source
Caolán McNamara
caolanm at redhat.com
Sun Dec 13 02:41:32 PST 2015
lotuswordpro/source/filter/lwpcelllayout.cxx | 6 +++---
lotuswordpro/source/filter/lwpframelayout.cxx | 2 +-
lotuswordpro/source/filter/lwplayout.cxx | 6 ++++--
lotuswordpro/source/filter/lwplayout.hxx | 12 +++++++++++-
4 files changed, 19 insertions(+), 7 deletions(-)
New commits:
commit c617765c305e43f699487016b02afaf5f65e4d64
Author: Caolán McNamara <caolanm at redhat.com>
Date: Sun Dec 13 10:40:10 2015 +0000
recursion protection
Change-Id: I66fda143ba1f0fa6f2638a8bd4936c75a6c40980
(cherry picked from commit 4e6df6de1a95b6b4194cf930cabaae7fde3b6960)
diff --git a/lotuswordpro/source/filter/lwpcelllayout.cxx b/lotuswordpro/source/filter/lwpcelllayout.cxx
index 76faa62..0a8356d 100644
--- a/lotuswordpro/source/filter/lwpcelllayout.cxx
+++ b/lotuswordpro/source/filter/lwpcelllayout.cxx
@@ -645,7 +645,7 @@ void LwpCellLayout::ApplyProtect(XFCell * pCell, LwpObjectID aTableID)
{
bool bProtected = false;
// judge current cell
- if (IsProtected())
+ if (GetIsProtected())
{
bProtected = true;
}
@@ -653,7 +653,7 @@ void LwpCellLayout::ApplyProtect(XFCell * pCell, LwpObjectID aTableID)
{
// judge base on
LwpCellLayout * pBase = dynamic_cast<LwpCellLayout *>(GetBasedOnStyle().get());
- if (pBase && pBase->IsProtected())
+ if (pBase && pBase->GetIsProtected())
{
bProtected = true;
}
@@ -663,7 +663,7 @@ void LwpCellLayout::ApplyProtect(XFCell * pCell, LwpObjectID aTableID)
LwpTable * pTable = dynamic_cast<LwpTable *>(aTableID.obj().get());
LwpTableLayout * pTableLayout = pTable ? dynamic_cast<LwpTableLayout *>(pTable->GetTableLayout()) : nullptr;
LwpSuperTableLayout * pSuper = pTableLayout ? pTableLayout->GetSuperTableLayout() : nullptr;
- if (pSuper && pSuper->IsProtected())
+ if (pSuper && pSuper->GetIsProtected())
{
bProtected = true;
}
diff --git a/lotuswordpro/source/filter/lwpframelayout.cxx b/lotuswordpro/source/filter/lwpframelayout.cxx
index 165d9e5..b31791a 100644
--- a/lotuswordpro/source/filter/lwpframelayout.cxx
+++ b/lotuswordpro/source/filter/lwpframelayout.cxx
@@ -397,7 +397,7 @@ void LwpFrame::ApplyBackColor(XFFrameStyle* pFrameStyle)
*/
void LwpFrame::ApplyProtect(XFFrameStyle* pFrameStyle)
{
- if(m_pLayout->IsProtected())
+ if(m_pLayout->GetIsProtected())
{
pFrameStyle->SetProtect(true,true,true);
}
diff --git a/lotuswordpro/source/filter/lwplayout.cxx b/lotuswordpro/source/filter/lwplayout.cxx
index 86a1863..3e58fa9 100644
--- a/lotuswordpro/source/filter/lwplayout.cxx
+++ b/lotuswordpro/source/filter/lwplayout.cxx
@@ -74,6 +74,8 @@
LwpVirtualLayout::LwpVirtualLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm)
: LwpDLNFPVList(objHdr, pStrm)
, m_bGettingHonorProtection(false)
+ , m_bGettingHasProtection(false)
+ , m_bGettingIsProtected(false)
, m_nAttributes(0)
, m_nAttributes2(0)
, m_nAttributes3(0)
@@ -1267,7 +1269,7 @@ bool LwpMiddleLayout::IsProtected()
}
else if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*> (GetBasedOnStyle().get()))
{
- bProtected = pLay->IsProtected();
+ bProtected = pLay->GetIsProtected();
}
else
bProtected = LwpVirtualLayout::IsProtected();
@@ -1276,7 +1278,7 @@ bool LwpMiddleLayout::IsProtected()
if(pParent && !pParent->IsHeader())
{
/* If a parent's protected then none of its children can be accessed. */
- if(pParent->IsProtected())
+ if(pParent->GetIsProtected())
return true;
if(pParent->GetHonorProtection())
diff --git a/lotuswordpro/source/filter/lwplayout.hxx b/lotuswordpro/source/filter/lwplayout.hxx
index e9c039a..1419043 100644
--- a/lotuswordpro/source/filter/lwplayout.hxx
+++ b/lotuswordpro/source/filter/lwplayout.hxx
@@ -120,7 +120,15 @@ public:
m_bGettingHonorProtection = false;
return bRet;
}
- virtual bool IsProtected();
+ bool GetIsProtected()
+ {
+ if (m_bGettingIsProtected)
+ throw std::runtime_error("recursion in layout");
+ m_bGettingIsProtected = true;
+ bool bRet = IsProtected();
+ m_bGettingIsProtected = false;
+ return bRet;
+ }
bool GetHasProtection()
{
if (m_bGettingHasProtection)
@@ -181,9 +189,11 @@ protected:
void Read() override;
bool HasProtection();
virtual bool HonorProtection();
+ virtual bool IsProtected();
protected:
bool m_bGettingHonorProtection;
bool m_bGettingHasProtection;
+ bool m_bGettingIsProtected;
sal_uInt32 m_nAttributes;
sal_uInt32 m_nAttributes2;
sal_uInt32 m_nAttributes3;
More information about the Libreoffice-commits
mailing list