summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2024-03-22 14:27:01 +0100
committerMichael Stahl <michael.stahl@allotropia.de>2024-03-22 16:06:20 +0100
commitdf6fdb0041f8bfd251a4b03030b8bc47f0614c36 (patch)
tree0549db269e1efabc1699749eb4023b76e875ce69
parent370ca73a45b291e172918b4c8fcbc37ccaa434cf (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.cxx15
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);
}
}