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

ofz: better loop detection

Change-Id: I285358064ab9c02b5818bc0452ae3c35962778c6
Reviewed-on: https://gerrit.libreoffice.org/49630Tested-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 75426421
......@@ -1314,18 +1314,17 @@ bool LwpMiddleLayout::IsProtected()
rtl::Reference<LwpVirtualLayout> LwpMiddleLayout::GetWaterMarkLayout()
{
rtl::Reference<LwpVirtualLayout> xLay(dynamic_cast<LwpVirtualLayout*>(GetChildHead().obj().get()));
std::set<LwpVirtualLayout*> aSeen;
while (xLay.is())
{
aSeen.insert(xLay.get());
if (xLay->IsForWaterMark())
{
return xLay;
}
rtl::Reference<LwpVirtualLayout> xNext(dynamic_cast<LwpVirtualLayout*>(xLay->GetNext().obj().get()));
if (xNext == xLay)
{
SAL_WARN("lwp", "loop in layout");
break;
}
if (aSeen.find(xNext.get()) != aSeen.end())
throw std::runtime_error("loop in conversion");
xLay = xNext;
}
return rtl::Reference<LwpVirtualLayout>();
......
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