ofz#7146 Infinite recurse
Change-Id: I0afc3a73933e3370c5b1aeca1beabec94c56a6e6 Reviewed-on: https://gerrit.libreoffice.org/51911 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
This commit is contained in:
@@ -83,6 +83,7 @@ LwpVirtualLayout::LwpVirtualLayout(LwpObjectHeader const &objHdr, LwpSvStream* p
|
|||||||
, m_bGettingMarginsValue(false)
|
, m_bGettingMarginsValue(false)
|
||||||
, m_bGettingExtMarginsValue(false)
|
, m_bGettingExtMarginsValue(false)
|
||||||
, m_bGettingUsePrinterSettings(false)
|
, m_bGettingUsePrinterSettings(false)
|
||||||
|
, m_bGettingScaleCenter(false)
|
||||||
, m_bGettingUseWhen(false)
|
, m_bGettingUseWhen(false)
|
||||||
, m_bGettingStyleLayout(false)
|
, m_bGettingStyleLayout(false)
|
||||||
, m_nAttributes(0)
|
, m_nAttributes(0)
|
||||||
@@ -953,16 +954,26 @@ sal_uInt16 LwpMiddleLayout::GetScaleTile()
|
|||||||
|
|
||||||
sal_uInt16 LwpMiddleLayout::GetScaleCenter()
|
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())
|
if ((m_nOverrideFlag & OVER_SCALING) && m_LayScale.obj().is() && GetLayoutScale())
|
||||||
{
|
{
|
||||||
return (GetLayoutScale()->GetPlacement() & LwpLayoutScale::CENTERED)
|
nRet = (GetLayoutScale()->GetPlacement() & LwpLayoutScale::CENTERED)
|
||||||
? 1 : 0;
|
? 1 : 0;
|
||||||
}
|
}
|
||||||
rtl::Reference<LwpObject> xBase(GetBasedOnStyle());
|
|
||||||
if (xBase.is())
|
|
||||||
return dynamic_cast<LwpMiddleLayout&>(*xBase.get()).GetScaleCenter();
|
|
||||||
else
|
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()
|
bool LwpMiddleLayout::CanSizeRight()
|
||||||
|
@@ -237,6 +237,7 @@ protected:
|
|||||||
bool m_bGettingMarginsValue;
|
bool m_bGettingMarginsValue;
|
||||||
bool m_bGettingExtMarginsValue;
|
bool m_bGettingExtMarginsValue;
|
||||||
bool m_bGettingUsePrinterSettings;
|
bool m_bGettingUsePrinterSettings;
|
||||||
|
bool m_bGettingScaleCenter;
|
||||||
bool m_bGettingUseWhen;
|
bool m_bGettingUseWhen;
|
||||||
bool m_bGettingStyleLayout;
|
bool m_bGettingStyleLayout;
|
||||||
sal_uInt32 m_nAttributes;
|
sal_uInt32 m_nAttributes;
|
||||||
|
Reference in New Issue
Block a user