sw/source/core/doc/docbm.cxx | 4 +++- sw/source/core/unocore/unoframe.cxx | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-)
New commits: commit 81112d875f1c29f1244e7f283f90d56cfbe5b5b4 Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Tue Oct 29 18:37:23 2019 +0100 Commit: Michael Stahl <michael.st...@cib.de> CommitDate: Wed Oct 30 14:44:45 2019 +0100 sw: SwXFrame::attach(): re-anchoring AS_CHAR flys does not work This happens on import of fdo75208-1.docx, where this: 9 writerfilter::dmapper::DomainMapper_Impl::appendTextContent(com::sun::star::uno::Reference<com::sun::star::text::XTextContent> const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (this=0x6406be0, xContent=uno::Reference to (SwXTextFrame *) 0x6944030, xPropertyValues=empty uno::Sequence) at writerfilter/source/dmapper/DomainMapper_Impl.cxx:1845 10 writerfilter::dmapper::DomainMapper_Impl::PopShapeContext() (this=0x6406be0) at writerfilter/source/dmapper/DomainMapper_Impl.cxx:2620 11 writerfilter::dmapper::DomainMapper::lcl_endShape() (this=0x6406b10) at writerfilter/source/dmapper/DomainMapper.cxx:2989 ... somehow wants to reanchor it but the result is that the SwFormatAnchor in the SwFrameFormat points to one node and the SwTextFlyCnt hint and its CH_TXTATR dummy char are in a different node, and during text formatting we get sw/source/core/text/txtfrm.cxx:1261: TextFrameIndex SwTextFrame::MapModelToView(const SwTextNode*, sal_Int32) const: Assertion `static_cast<SwTextNode*>(const_cast<SwModify*>(SwFrame::GetDep())) == pNode' failed. If this is really intentional something, perhaps SwFrameFormat::Modify(), would need to move the hint too, but probably this is an accident. Change-Id: I4d2afec275f187a65d18c0bcd0fd17e12c42ed0a Reviewed-on: https://gerrit.libreoffice.org/81702 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx index d9db73e540ea..294db651c919 100644 --- a/sw/source/core/unocore/unoframe.cxx +++ b/sw/source/core/unocore/unoframe.cxx @@ -3096,6 +3096,14 @@ void SwXFrame::attach(const uno::Reference< text::XTextRange > & xTextRange) SfxItemSet aSet( pDoc->GetAttrPool(), svl::Items<RES_ANCHOR, RES_ANCHOR>{} ); aSet.SetParent(&pFormat->GetAttrSet()); SwFormatAnchor aAnchor = aSet.Get(RES_ANCHOR); + + if (aAnchor.GetAnchorId() == RndStdIds::FLY_AS_CHAR) + { + throw lang::IllegalArgumentException( + "SwXFrame::attach(): re-anchoring AS_CHAR not supported", + *this, 0); + } + aAnchor.SetAnchor( aIntPam.Start() ); aSet.Put(aAnchor); pDoc->SetFlyFrameAttr( *pFormat, aSet ); commit a631fbe78881707b74025f6ba392f100aad6419f Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Tue Oct 29 17:40:02 2019 +0100 Commit: Michael Stahl <michael.st...@cib.de> CommitDate: Wed Oct 30 14:44:31 2019 +0100 sw: makeMark(): insert CH_TXT_ATR before inserting into sorted vector ... because if the new fieldmark is exactly around an existing fieldmark, we get this on tdf112797-3.docx: sw/source/core/doc/docbm.cxx:481: void {anonymous}::lcl_DebugMarks(const container_t&): Assertion `std::is_sorted(rMarks.begin(), rMarks.end(), lcl_MarkOrderingByStart)' failed. Change-Id: If998c95d4c6c40654936773defc674ee55f736c4 Reviewed-on: https://gerrit.libreoffice.org/81700 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx index b3d0470a3124..fed537289400 100644 --- a/sw/source/core/doc/docbm.cxx +++ b/sw/source/core/doc/docbm.cxx @@ -642,6 +642,9 @@ namespace sw { namespace mark if ( eType != IDocumentMarkAccess::MarkType::UNO_BOOKMARK ) pMark->SetName( getUniqueMarkName( pMark->GetName() ) ); + // insert any dummy chars before inserting into sorted vectors + pMark->InitDoc(m_pDoc, eMode, pSepPos); + // register mark lcl_InsertMarkSorted(m_vAllMarks, pMark.get()); switch(eType) @@ -666,7 +669,6 @@ namespace sw { namespace mark // no special array for these break; } - pMark->InitDoc(m_pDoc, eMode, pSepPos); SAL_INFO("sw.core", "--- makeType ---"); SAL_INFO("sw.core", "Marks"); lcl_DebugMarks(m_vAllMarks); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits