sw/source/core/layout/tabfrm.cxx |    1 +
 1 file changed, 1 insertion(+)

New commits:
commit ffb822516a84c57c19638eafd51a4059a0592d5a
Author:     Michael Stahl <michael.st...@cib.de>
AuthorDate: Fri Jul 31 14:46:13 2020 +0200
Commit:     Thorsten Behrens <thorsten.behr...@cib.de>
CommitDate: Sun Aug 2 00:05:57 2020 +0200

    tdf#134965 sw: avoid RemoveFollowFlowLine() SNAFU
    
    A follow-flow-line SwRowFrame is deleted in RemoveFollowFlowLine()
    while it is being iterated in stack frame #18.
    
    0  SwRowFrame::~SwRowFrame() (this=0xaa035b0, __in_chrg=<optimized out>) at 
sw/source/core/layout/tabfrm.cxx:3807
    1  SwFrame::DestroyFrame(SwFrame*) (pFrame=0xaa035b0) at 
sw/source/core/layout/ssfrm.cxx:389
    2  SwTabFrame::RemoveFollowFlowLine() (this=0x9c16790) at 
sw/source/core/layout/tabfrm.cxx:945
    3  SwTabFrame::MakeAll(OutputDevice*) (this=0x9c16790, 
pRenderContext=0x72afaf0) at sw/source/core/layout/tabfrm.cxx:2203
    4  SwFrame::PrepareMake(OutputDevice*) (this=0x9c16790, 
pRenderContext=0x72afaf0) at sw/source/core/layout/calcmove.cxx:370
    5  SwFrame::Calc(OutputDevice*) const (this=0x9c16790, 
pRenderContext=0x72afaf0) at sw/source/core/layout/trvlfrm.cxx:1791
    6  SwFrame::PrepareMake(OutputDevice*) (this=0x925b740, 
pRenderContext=0x72afaf0) at sw/source/core/layout/calcmove.cxx:248
    7  SwFrame::Calc(OutputDevice*) const (this=0x925b740, 
pRenderContext=0x72afaf0) at sw/source/core/layout/trvlfrm.cxx:1791
    8  SwFrame::PrepareMake(OutputDevice*) (this=0x925b8e0, 
pRenderContext=0x72afaf0) at sw/source/core/layout/calcmove.cxx:248
    9  SwFrame::Calc(OutputDevice*) const (this=0x925b8e0, 
pRenderContext=0x72afaf0) at sw/source/core/layout/trvlfrm.cxx:1791
    10 SwFrame::PrepareMake(OutputDevice*) (this=0x925ba70, 
pRenderContext=0x72afaf0) at sw/source/core/layout/calcmove.cxx:248
    11 SwFrame::Calc(OutputDevice*) const (this=0x925ba70, 
pRenderContext=0x72afaf0) at sw/source/core/layout/trvlfrm.cxx:1791
    12 SwFrame::MakePos() (this=0x925bc20) at 
sw/source/core/layout/calcmove.cxx:552
    13 SwTextFrame::MakePos() (this=0x925bc20) at 
sw/source/core/text/frmform.cxx:339
    14 SwContentFrame::MakeAll(OutputDevice*) (this=0x925bc20) at 
sw/source/core/layout/calcmove.cxx:1408
    15 SwFrame::PrepareMake(OutputDevice*) (this=0x925bc20, 
pRenderContext=0x72afaf0) at sw/source/core/layout/calcmove.cxx:370
    16 SwFrame::Calc(OutputDevice*) const (this=0x925bc20, 
pRenderContext=0x72afaf0) at sw/source/core/layout/trvlfrm.cxx:1791
    17 SwContentFrame::CalcLowers(SwLayoutFrame&, SwLayoutFrame const&, long, 
bool) (rLay=..., rDontLeave=..., nBottom=168478, bSkipRowSpanCells=true) at 
sw/source/core/layout/tabfrm.cxx:1521
    18 lcl_RecalcRow(SwRowFrame&, long) (rRow=..., nBottom=168478) at 
sw/source/core/layout/tabfrm.cxx:1651
    19 SwTabFrame::MakeAll(OutputDevice*) (this=0x93ec7e0, 
pRenderContext=0x72afaf0) at sw/source/core/layout/tabfrm.cxx:2421
    20 SwFrame::PrepareMake(OutputDevice*) (this=0x3df3cc0, 
pRenderContext=0x72afaf0) at sw/source/core/layout/calcmove.cxx:316
    21 SwFrame::Calc(OutputDevice*) const (this=0x3df3cc0, 
pRenderContext=0x72afaf0) at sw/source/core/layout/trvlfrm.cxx:1791
    22 GetFrameOfModify(SwRootFrame const*, SwModify const&, SwFrameType, 
SwPosition const*, std::pair<Point, bool> const*) (pLayout=0x72aa850, rMod=..., 
nFrameType=(SwFrameType::Txt | SwFrameType::NoTxt), pPos=0x71f35e0, 
pViewPosAndCalcFrame=0x7ffc99f591a0) at sw/source/core/layout/frmtool.cxx:3697
    23 SwContentNode::getLayoutFrame(SwRootFrame const*, SwPosition const*, 
std::pair<Point, bool> const*) const (this=0x6fcfb50, _pRoot=0x72aa850, 
pPos=0x71f35e0, pViewPosAndCalcFrame=0x7ffc99f591a0) at 
sw/source/core/docnode/node.cxx:1194
    24 SwCursorShell::GetCurrFrame(bool) const (this=0x72a9730, 
bCalcFrame=true) at sw/source/core/crsr/crsrsh.cxx:2455
    25 SwFEShell::GetAnyCurRect(CurRectType, Point const*, 
com::sun::star::uno::Reference<com::sun::star::embed::XEmbeddedObject> const&) 
const (this=0x72a9730, eType=CurRectType::PageCalc, pPt=0x0, xObj=empty 
uno::Reference) at sw/source/core/frmedt/fews.cxx:113
    26 SwView::StateStatusLine(SfxItemSet&) (this=0x72af430, rSet=SfxItemSet of 
pool 0x6fa3d50 with parent 0x0 and Which ranges: [(10000, 10000), (10221, 
10221), (10223, 10225), (11064, 11065), (21182, 21182), (21185, 21185), (21189, 
21189)] = {...}) at sw/source/uibase/uiview/view2.cxx:1517
    
    Not obvious why this changed with calling MakeFrames() instead of
    SwNodes::CopyNodes(bNewFrames=true) or how to best prevent it; adding
    another FrameDeleteGuard avoids the crash at least.
    
    (regression from 166b5010b402a41b192b1659093a25acf9065fd9)
    
    Change-Id: Ifd5a0c93064c9536429dda30a2c4ebc7a31b7e7d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99870
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@cib.de>
    (cherry picked from commit aed92491f356b008fe1cd25b5cd6cc43279db3a3)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99848
    Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de>

diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index 42150626aa10..060d5151e3bc 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -2381,6 +2381,7 @@ void SwTabFrame::MakeAll(vcl::RenderContext* 
pRenderContext)
                                         GetUpper()->Grow( LONG_MAX, true ) );
 
                 {
+                    SwFrameDeleteGuard g(Lower()); // tdf#134965 prevent 
RemoveFollowFlowLine()
                     SetInRecalcLowerRow( true );
                     ::lcl_RecalcRow(*static_cast<SwRowFrame*>(Lower()), 
nDeadLine);
                     SetInRecalcLowerRow( false );
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to