Kaydet (Commit) 78a43cee authored tarafından Caolán McNamara's avatar Caolán McNamara

ofz#7146 Infinite recurse

Change-Id: I0afc3a73933e3370c5b1aeca1beabec94c56a6e6
Reviewed-on: https://gerrit.libreoffice.org/51911Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 4869f83c
......@@ -83,6 +83,7 @@ LwpVirtualLayout::LwpVirtualLayout(LwpObjectHeader const &objHdr, LwpSvStream* p
, m_bGettingMarginsValue(false)
, m_bGettingExtMarginsValue(false)
, m_bGettingUsePrinterSettings(false)
, m_bGettingScaleCenter(false)
, m_bGettingUseWhen(false)
, m_bGettingStyleLayout(false)
, m_nAttributes(0)
......@@ -953,16 +954,26 @@ sal_uInt16 LwpMiddleLayout::GetScaleTile()
sal_uInt16 LwpMiddleLayout::GetScaleCenter()
{
if (m_bGettingScaleCenter)
throw std::runtime_error("recursion in layout");
m_bGettingScaleCenter = true;
sal_uInt16 nRet = 0;
if ((m_nOverrideFlag & OVER_SCALING) && m_LayScale.obj().is() && GetLayoutScale())
{
return (GetLayoutScale()->GetPlacement() & LwpLayoutScale::CENTERED)
nRet = (GetLayoutScale()->GetPlacement() & LwpLayoutScale::CENTERED)
? 1 : 0;
}
rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
if (xBase.is())
return dynamic_cast<LwpMiddleLayout&>(*xBase.get()).GetScaleCenter();
else
return 0;
{
rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
if (xBase.is())
nRet = dynamic_cast<LwpMiddleLayout&>(*xBase.get()).GetScaleCenter();
}
m_bGettingScaleCenter = false;
return nRet;
}
bool LwpMiddleLayout::CanSizeRight()
......
......@@ -237,6 +237,7 @@ protected:
bool m_bGettingMarginsValue;
bool m_bGettingExtMarginsValue;
bool m_bGettingUsePrinterSettings;
bool m_bGettingScaleCenter;
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