diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-02-03 12:06:23 +0000 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2020-02-12 22:23:02 +0100 |
commit | c9605cc66bcc655f3d7c8f3264efa691de42aed5 (patch) | |
tree | dd69e920ef22391275b75fcb01294d093fa642e0 /include | |
parent | tdf#130054: consider all row/col bars in ScTabView::EnableRefInput (diff) | |
download | core-c9605cc66bcc655f3d7c8f3264efa691de42aed5.tar.gz core-c9605cc66bcc655f3d7c8f3264efa691de42aed5.zip |
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>
(cherry picked from commit 086e43148059a7ebc6caa416fa82bb60fd2cc92f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88494
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/svx/sdtacitm.hxx | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/svx/sdtacitm.hxx b/include/svx/sdtacitm.hxx index bf145c8b6b6c..f34e5589ed53 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) {} |