sw/source/core/layout/tabfrm.cxx | 1 +
1 file changed, 1 insertion(+)
New commits:
commit ffb822516a84c57c19638eafd51a4059a0592d5a
Author: Michael Stahl <[email protected]>
AuthorDate: Fri Jul 31 14:46:13 2020 +0200
Commit: Thorsten Behrens <[email protected]>
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 <[email protected]>
(cherry picked from commit aed92491f356b008fe1cd25b5cd6cc43279db3a3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99848
Reviewed-by: Thorsten Behrens <[email protected]>
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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits