diff options
author | Caolán McNamara <caolanm@redhat.com> | 2022-03-25 21:26:43 +0000 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2022-05-13 14:14:27 +0200 |
commit | bbee3f06fe71ad1f33fdb5844d75bde5745e3629 (patch) | |
tree | c82996e78795586f8797ea89b0d1b792dce61765 | |
parent | 951592a21ccee1126de35ba071e31f80d906fb39 (diff) |
forcepoint#91 fix crash on layout of specific html
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132129
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit be04a8072e4af30ca6ead36aa92d5f380cd9feb9)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132483
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
(cherry picked from commit 4abce69fca83f5c98bb1fc0678cc1ce9cedd4750)
(cherry picked from commit 4b23de1b8096b5814a654482966e83416498734a)
Change-Id: I145649e18f382c67ea34290f44fa219b7926127f
-rw-r--r-- | sw/qa/extras/layout/data/forcepoint89.html | bin | 0 -> 3321 bytes | |||
-rw-r--r-- | sw/qa/extras/layout/data/forcepoint91.html | bin | 0 -> 49256 bytes | |||
-rw-r--r-- | sw/qa/extras/layout/data/tdf147485-forcepoint.doc | bin | 0 -> 62544 bytes | |||
-rw-r--r-- | sw/qa/extras/layout/layout.cxx | 23 | ||||
-rw-r--r-- | sw/source/core/layout/tabfrm.cxx | 2 |
5 files changed, 25 insertions, 0 deletions
diff --git a/sw/qa/extras/layout/data/forcepoint89.html b/sw/qa/extras/layout/data/forcepoint89.html Binary files differnew file mode 100644 index 000000000000..7998a2b0b979 --- /dev/null +++ b/sw/qa/extras/layout/data/forcepoint89.html diff --git a/sw/qa/extras/layout/data/forcepoint91.html b/sw/qa/extras/layout/data/forcepoint91.html Binary files differnew file mode 100644 index 000000000000..eacbd2e05ab8 --- /dev/null +++ b/sw/qa/extras/layout/data/forcepoint91.html diff --git a/sw/qa/extras/layout/data/tdf147485-forcepoint.doc b/sw/qa/extras/layout/data/tdf147485-forcepoint.doc Binary files differnew file mode 100644 index 000000000000..cb630efb8717 --- /dev/null +++ b/sw/qa/extras/layout/data/tdf147485-forcepoint.doc diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx index 81c1eb53e716..ec7b4fd00a02 100644 --- a/sw/qa/extras/layout/layout.cxx +++ b/sw/qa/extras/layout/layout.cxx @@ -37,6 +37,7 @@ public: void testForcepoint90(); void testForcepoint92(); void testForcepoint93(); + void testTdf147485Forcepoint(); void testTdf118058(); void testTdf117188(); void testTdf119875(); @@ -62,6 +63,7 @@ public: CPPUNIT_TEST(testForcepoint90); CPPUNIT_TEST(testForcepoint92); CPPUNIT_TEST(testForcepoint93); + CPPUNIT_TEST(testTdf147485Forcepoint); CPPUNIT_TEST(testTdf118058); CPPUNIT_TEST(testTdf117188); CPPUNIT_TEST(testTdf119875); @@ -262,6 +264,14 @@ void SwLayoutWriter::testTdf109137() void SwLayoutWriter::testForcepoint76() { createDoc("forcepoint76-1.rtf"); } //just care it doesn't crash/assert +#if 0 // no createSwWebDoc +CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testForcepoint89) +{ + createSwWebDoc(DATA_DIRECTORY, "forcepoint89.html"); +} +#endif + +//just care it doesn't crash/assert void SwLayoutWriter::testN4LA0OHZ() { createDoc("LIBREOFFICE-N4LA0OHZ.rtf"); } // FIXME: apparently infinite loop on Mac @@ -275,6 +285,13 @@ void SwLayoutWriter::testForcepoint90() createDoc("forcepoint90.rtf"); } +#if 0 // no createSwWebDoc +CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testForcepoint91) +{ + createSwWebDoc(DATA_DIRECTORY, "forcepoint91.html"); +} +#endif + //just care it doesn't crash/assert void SwLayoutWriter::testForcepoint92() { createDoc("forcepoint92.doc"); } @@ -293,6 +310,12 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testForcepoint94) } #endif +//just care it doesn't crash/assert +void SwLayoutWriter::testTdf147485Forcepoint() +{ + createDoc("tdf147485-forcepoint.doc"); +} + void SwLayoutWriter::testTdf118058() { SwDoc* pDoc = createDoc("tdf118058.fodt"); diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx index 82e6e4d32bf9..8da20ee2f3ea 100644 --- a/sw/source/core/layout/tabfrm.cxx +++ b/sw/source/core/layout/tabfrm.cxx @@ -1559,6 +1559,8 @@ static bool lcl_InnerCalcLayout( SwFrame *pFrame, if ( pFrame->IsLayoutFrame() && ( !_bOnlyRowsAndCells || pFrame->IsRowFrame() || pFrame->IsCellFrame() ) ) { + SwFrameDeleteGuard aDeleteGuard(pFrame); + // #130744# An invalid locked table frame will // not be calculated => It will not become valid => // Loop in lcl_RecalcRow(). Therefore we do not consider them for bRet. |