[Libreoffice-commits] core.git: lotuswordpro/source
Caolán McNamara
caolanm at redhat.com
Thu Mar 29 10:45:15 UTC 2018
lotuswordpro/source/filter/lwpdoc.cxx | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
New commits:
commit 8d1de00d3efb0f772b1c64c315bd337601b14d91
Author: Caolán McNamara <caolanm at redhat.com>
Date: Thu Mar 29 09:11:33 2018 +0100
lwp infinite loop
Change-Id: Ic384dfd66f834ee360c60e497b8b7b688c913f02
Reviewed-on: https://gerrit.libreoffice.org/52057
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/lotuswordpro/source/filter/lwpdoc.cxx b/lotuswordpro/source/filter/lwpdoc.cxx
index 728df2e413b8..77dae05e68dc 100644
--- a/lotuswordpro/source/filter/lwpdoc.cxx
+++ b/lotuswordpro/source/filter/lwpdoc.cxx
@@ -628,14 +628,15 @@ LwpDocument* LwpDocument::GetLastDivisionWithContents()
LwpDocument* LwpDocument::GetRootDocument()
{
LwpDocument* pRoot = this;
- while(pRoot)
+ std::set<LwpDocument*> aSeen;
+ while (pRoot)
{
+ aSeen.insert(pRoot);
if(!pRoot->IsChildDoc())
return pRoot;
- LwpDocument* pNextRoot = pRoot->GetParentDivision();
- if (pNextRoot == pRoot)
- throw std::runtime_error("loop in ParentDivision");
- pRoot = pNextRoot;
+ pRoot = pRoot->GetParentDivision();
+ if (aSeen.find(pRoot) != aSeen.end())
+ throw std::runtime_error("loop in conversion");
}
return nullptr;
}
@@ -670,12 +671,12 @@ LwpDocument* LwpDocument::GetLastDivisionWithContents()
std::set<LwpDocument*> aSeen;
while (pLastDoc)
{
- if (aSeen.find(pLastDoc) != aSeen.end())
- throw std::runtime_error("loop in conversion");
+ aSeen.insert(pLastDoc);
if (pLastDoc->GetEnSuperTableLayout().is())
return pLastDoc;
pLastDoc = pLastDoc->GetPreviousDivisionWithContents();
- aSeen.insert(pLastDoc);
+ if (aSeen.find(pLastDoc) != aSeen.end())
+ throw std::runtime_error("loop in conversion");
}
return nullptr;
More information about the Libreoffice-commits
mailing list