sw/qa/extras/ww8import/data/fdo68967.doc |binary sw/qa/extras/ww8import/ww8import.cxx | 4 ++++ sw/source/core/layout/tabfrm.cxx | 9 ++++++++- 3 files changed, 12 insertions(+), 1 deletion(-)
New commits: commit 4fd5423739c12900e8efe2f3901568431e36a94c Author: Caolán McNamara <caol...@redhat.com> Date: Tue Sep 16 13:24:05 2014 +0100 'Artur Dent' -> 'Arthur Dent' Change-Id: Idbeac2925ce0f91075f3c4f5468574c62e29f420 diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx index f7a39f5..a946293 100644 --- a/sw/source/core/layout/tabfrm.cxx +++ b/sw/source/core/layout/tabfrm.cxx @@ -2169,7 +2169,7 @@ void SwTabFrm::MakeAll() //right moment to do some preferably constructive changes. //If I'm NOT allowed to leave the parent Frm, I've got a problem. - // Following Artur Dent, we do the only thing that you can do with + // Following Arthur Dent, we do the only thing that you can do with // an unsolvable problem: We ignore it with all our power. if ( !bMoveable ) { commit 1fec67aab152e0c0ad6dd85082c50f1beff7d520 Author: Caolán McNamara <caol...@redhat.com> Date: Tue Sep 16 13:22:44 2014 +0100 Resolves: fdo#68967 looping layout RemoveFollowFlowLine() marks the layout invalid, but the next cycle through does everything exactly the same again. Try the same foul horror as nUnSplitted. But at least with a test-case that nails down reproducing the bug if a better fix is needed. Change-Id: Id6698bcb2364bd0253bedd4a7c313e25f705be8d diff --git a/sw/qa/extras/ww8import/data/fdo68967.doc b/sw/qa/extras/ww8import/data/fdo68967.doc new file mode 100644 index 0000000..05271c3 Binary files /dev/null and b/sw/qa/extras/ww8import/data/fdo68967.doc differ diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx index 463c5ae..5f4e0bc 100644 --- a/sw/qa/extras/ww8import/ww8import.cxx +++ b/sw/qa/extras/ww8import/ww8import.cxx @@ -510,6 +510,10 @@ DECLARE_WW8IMPORT_TEST(testBnc787942, "bnc787942.doc") parseDump("/root/page[1]/body/txt[4]/anchored"); } +DECLARE_WW8IMPORT_TEST(testLayoutHanging, "fdo68967.doc") +{ + // This must not hang in layout +} CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx index 06f38c7..f7a39f5 100644 --- a/sw/source/core/layout/tabfrm.cxx +++ b/sw/source/core/layout/tabfrm.cxx @@ -1831,6 +1831,7 @@ void SwTabFrm::MakeAll() } int nUnSplitted = 5; // Just another loop control :-( + int nThrowAwayValidLayoutLimit = 5; // And another one :-( SWRECTFN( this ) while ( !mbValidPos || !mbValidSize || !mbValidPrtArea ) { @@ -2301,7 +2302,13 @@ void SwTabFrm::MakeAll() // An existing follow flow line has to be removed. if ( HasFollowFlowLine() ) { + if (!nThrowAwayValidLayoutLimit) + continue; + bool bInitialLoopEndCondition = mbValidPos && mbValidSize && mbValidPrtArea; RemoveFollowFlowLine(); + bool bFinalLoopEndCondition = mbValidPos && mbValidSize && mbValidPrtArea; + if (bInitialLoopEndCondition && !bFinalLoopEndCondition) + --nThrowAwayValidLayoutLimit; } const bool bSplitError = !Split( nDeadLine, bTryToSplit, ( bTableRowKeep && !bAllowSplitOfRow ) );
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits