diff options
author | Michael Stahl <michael.stahl@allotropia.de> | 2024-03-22 14:27:01 +0100 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2024-03-22 16:06:20 +0100 |
commit | df6fdb0041f8bfd251a4b03030b8bc47f0614c36 (patch) | |
tree | 0549db269e1efabc1699749eb4023b76e875ce69 | |
parent | 370ca73a45b291e172918b4c8fcbc37ccaa434cf (diff) |
tdf#157241 sw: assert when importing ToX in table in rhbz589883-2.docx
ndtbl.cxx:1417: SwNodes::TextToTable(): Assertion `!rNode.IsSectionNode()' failed.
(regression from commit 62cb3b8b8d6106c6aeb073b12d84973a107182ef)
Change-Id: Iec12282573cb914d1924f4da4a28e26e01b866df
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165164
Tested-by: Michael Stahl <michael.stahl@allotropia.de>
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
-rw-r--r-- | sw/source/core/docnode/ndtbl.cxx | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx index 00698a0c91c7..7cb12d996ef9 100644 --- a/sw/source/core/docnode/ndtbl.cxx +++ b/sw/source/core/docnode/ndtbl.cxx @@ -1413,16 +1413,19 @@ SwTableNode* SwNodes::TextToTable( const SwNodes::TableRanges_t & rTableNodes, // delete frames of all contained content nodes for( nLines = 0; aNodeIndex <= rTableNodes.rbegin()->rbegin()->aEnd; ++aNodeIndex,++nLines ) { - SwNode& rNode = aNodeIndex.GetNode(); - assert(!rNode.IsSectionNode()); // not possible in writerfilter import - if (rNode.IsTableNode()) + SwNode* pNode(&aNodeIndex.GetNode()); + while (pNode->IsSectionNode()) // could be ToX field in table { - lcl_RemoveBreaksTable(static_cast<SwTableNode&>(rNode), + pNode = pNode->GetNodes()[pNode->GetIndex()+1]; + } + if (pNode->IsTableNode()) + { + lcl_RemoveBreaksTable(static_cast<SwTableNode&>(*pNode), (0 == nLines) ? pTableFormat : nullptr); } - else if (rNode.IsContentNode()) + else if (pNode->IsContentNode()) { - lcl_RemoveBreaks(static_cast<SwContentNode&>(rNode), + lcl_RemoveBreaks(static_cast<SwContentNode&>(*pNode), (0 == nLines) ? pTableFormat : nullptr); } } |