summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-02-03 12:06:23 +0000
committerMichael Stahl <michael.stahl@cib.de>2020-02-12 13:07:39 +0100
commit086e43148059a7ebc6caa416fa82bb60fd2cc92f (patch)
tree05eb68b1f7e8a00e66d7675473be54a51abc1948 /include
parenta9ba8e57a41c5ddf3597272bddab30e51fb3fd38 (diff)
ofz#20455 sw: HTML import: fix invalid table in footer
The obvious problem was that a bookmark failed to be copied to the correct node, it was created on a SwStartNode, which failed in makeMark() and caused a null-pointer. The target position was off by 1 node because there was a spurious StartNode/EndNode pair directly below the table: [ 41] 0x5b13430 TableNode , [ 42] 0x5b1d010 StartNode , [ 43] 0x5b12a50 StartNode , [ 44] 0x5b135f0 TextNode "", This was created by a special case in SwTableNode::MakeCopy() because .GetTabSortBoxes().size() == 1. But the table had actually quite a bunch more cells in the nodes-array, just they were not yet in the SwTable. In an exciting twist of events, it turns out the table was copied while it was not yet finished parsing: the problem was that in the middle of the table, some CSS set some page attributes, and this caused a first-page page style to be created in SwCSS1Parser::ParseStyleSheet(), by copying the master page style. Unfortunately the table was in the <div title="footer">, so it was copied in this incomplete and inconsistent state. It might be possible to get rid of the special case in SwTableNode::MakeCopy() by restricting the special case skipping of StartNodes at the start in SwNodes::CopyNodes() a bit so that StartNodes whose EndNodes are copied aren't skipped; at least that's the most reasonable explanation for the special case. But for now just fix the HTML import. Additionally, only on MacOSX, using libc++, this triggered an assert: Assertion failed: (!pImpl->mpStaticDefaults || typeid(rItem) == typeid(GetDefaultItem(nWhich))), function PutImpl, file /Users/tdf/lode/jenkins/workspace/lo_gerrit/Config/macosx_clang_dbgutil/svl/source/items/itempool.cxx, line 611. Probably because SdrTextAniCountItem is not marked DLLPUBLIC. Change-Id: Ia167265e7540eea649801eaac2b89f9e18b685cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87859 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@cib.de>
Diffstat (limited to 'include')
-rw-r--r--include/svx/sdtacitm.hxx2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/svx/sdtacitm.hxx b/include/svx/sdtacitm.hxx
index c8bf4b773efa..820aee926503 100644
--- a/include/svx/sdtacitm.hxx
+++ b/include/svx/sdtacitm.hxx
@@ -23,7 +23,7 @@
#include <svx/svddef.hxx>
// Number of loops. 0=infinite.
-class SdrTextAniCountItem final : public SfxUInt16Item {
+class SAL_DLLPUBLIC_RTTI SdrTextAniCountItem final : public SfxUInt16Item {
public:
SdrTextAniCountItem(sal_uInt16 nVal=0): SfxUInt16Item(SDRATTR_TEXT_ANICOUNT,nVal) {}