Kaydet (Commit) 02c9756f authored tarafından Caolán McNamara's avatar Caolán McNamara

ofz#8161 avoid recurse to death

Change-Id: If3fc212ed0fe2b3cb3c1381198d46387861ac3dd
Reviewed-on: https://gerrit.libreoffice.org/53973Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst bfcf57de
......@@ -84,6 +84,7 @@ LwpVirtualLayout::LwpVirtualLayout(LwpObjectHeader const &objHdr, LwpSvStream* p
, m_bGettingExtMarginsValue(false)
, m_bGettingUsePrinterSettings(false)
, m_bGettingScaleCenter(false)
, m_bGettingBorderStuff(false)
, m_bGettingUseWhen(false)
, m_bGettingStyleLayout(false)
, m_nAttributes(0)
......@@ -788,20 +789,28 @@ double LwpMiddleLayout::ExtMarginsValue(sal_uInt8 nWhichSide)
*/
LwpBorderStuff* LwpMiddleLayout::GetBorderStuff()
{
if (m_bGettingBorderStuff)
throw std::runtime_error("recursion in layout");
m_bGettingBorderStuff = true;
LwpBorderStuff* pRet = nullptr;
if(m_nOverrideFlag & OVER_BORDERS)
{
LwpLayoutBorder* pLayoutBorder = dynamic_cast<LwpLayoutBorder*>(m_LayBorderStuff.obj().get());
return pLayoutBorder ? &pLayoutBorder->GetBorderStuff() : nullptr;
pRet = pLayoutBorder ? &pLayoutBorder->GetBorderStuff() : nullptr;
}
else
{
rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
if (LwpMiddleLayout* pLay = dynamic_cast<LwpMiddleLayout*>(xBase.get()))
{
return pLay->GetBorderStuff();
pRet = pLay->GetBorderStuff();
}
}
return nullptr;
m_bGettingBorderStuff= false;
return pRet;
}
/**
......
......@@ -238,6 +238,7 @@ protected:
bool m_bGettingExtMarginsValue;
bool m_bGettingUsePrinterSettings;
bool m_bGettingScaleCenter;
bool m_bGettingBorderStuff;
bool m_bGettingUseWhen;
bool m_bGettingStyleLayout;
sal_uInt32 m_nAttributes;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment