diff options
-rw-r--r-- | lotuswordpro/qa/cppunit/data/pass/ofz57800-1.lwp | bin | 0 -> 56867 bytes | |||
-rw-r--r-- | lotuswordpro/source/filter/lwplayout.cxx | 7 |
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 Binary files differnew file mode 100644 index 000000000000..3d9b4299f8e1 --- /dev/null +++ b/lotuswordpro/qa/cppunit/data/pass/ofz57800-1.lwp 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; |