summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2023-04-09 19:30:56 +0100
committerCaolán McNamara <caolanm@redhat.com>2023-04-10 10:40:01 +0200
commitffdee63185d910f9c239ddf1686f72589eee0973 (patch)
treed1be3dd50cf127fdcaa55f2954c53bf5212daed0
parent60bce1af8aab2115d603781193bb659b35d1aedb (diff)
ofz#57800 Timeout
Change-Id: I14b4906ce61b3d8a86cb9a766986c49e0b0e6abc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150171 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--lotuswordpro/qa/cppunit/data/pass/ofz57800-1.lwpbin0 -> 56867 bytes
-rw-r--r--lotuswordpro/source/filter/lwplayout.cxx7
2 files changed, 3 insertions, 4 deletions
diff --git a/lotuswordpro/qa/cppunit/data/pass/ofz57800-1.lwp b/lotuswordpro/qa/cppunit/data/pass/ofz57800-1.lwp
new file mode 100644
index 000000000000..3d9b4299f8e1
--- /dev/null
+++ b/lotuswordpro/qa/cppunit/data/pass/ofz57800-1.lwp
Binary files differ
diff --git a/lotuswordpro/source/filter/lwplayout.cxx b/lotuswordpro/source/filter/lwplayout.cxx
index 4de86299e369..895137e282f2 100644
--- a/lotuswordpro/source/filter/lwplayout.cxx
+++ b/lotuswordpro/source/filter/lwplayout.cxx
@@ -370,7 +370,7 @@ bool LwpVirtualLayout::IsStyleLayout()
LwpVirtualLayout* LwpVirtualLayout::FindChildByType(LWP_LAYOUT_TYPE eType)
{
LwpObjectID* pID = &GetChildHead();
- LwpVirtualLayout* pPrevLayout = nullptr;
+ o3tl::sorted_vector<LwpVirtualLayout*> aSeen;
while (pID && !pID->IsNull())
{
@@ -378,14 +378,13 @@ LwpVirtualLayout* LwpVirtualLayout::FindChildByType(LWP_LAYOUT_TYPE eType)
if (!pLayout)
break;
- if (pPrevLayout && pLayout == pPrevLayout)
+ bool bAlreadySeen = !aSeen.insert(pLayout).second;
+ if (bAlreadySeen)
{
SAL_WARN("lwp", "loop in layout");
break;
}
- pPrevLayout = pLayout;
-
if (pLayout->GetLayoutType() == eType)
return pLayout;