<html>
<head>
<base href="https://bugs.documentfoundation.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_UNCONFIRMED "
title="UNCONFIRMED - Table splits differently after save, corrected after click inside table"
href="https://bugs.documentfoundation.org/show_bug.cgi?id=132644#c2">Comment # 2</a>
on <a class="bz_bug_link
bz_status_UNCONFIRMED "
title="UNCONFIRMED - Table splits differently after save, corrected after click inside table"
href="https://bugs.documentfoundation.org/show_bug.cgi?id=132644">bug 132644</a>
from <span class="vcard"><a class="email" href="mailto:telesto@surfxs.nl" title="Telesto <telesto@surfxs.nl>"> <span class="fn">Telesto</span></a>
</span></b>
<pre>Created <span class=""><a href="http://bugs.documentfoundation.org/attachment.cgi?id=160283" name="attach_160283" title="Bibisect log">attachment 160283</a> <a href="http://bugs.documentfoundation.org/attachment.cgi?id=160283&action=edit" title="Bibisect log">[details]</a></span>
Bibisect log
Bisected to:
author Michael Stahl <<a href="mailto:Michael.Stahl@cib.de">Michael.Stahl@cib.de</a>> 2019-05-08 16:23:25 +0200
committer Michael Stahl <<a href="mailto:Michael.Stahl@cib.de">Michael.Stahl@cib.de</a>> 2019-05-09 10:53:11
+0200
commit cc5916cd314a27b0cc99560ab887480026630a95 (patch)
tree 924f56d1eb105c9e6d71c90cf6291fec6e3f7f60
parent f8b4d371eddd27594d549fb00294c01229a9bd24 (diff)
<a class="bz_bug_link
bz_status_VERIFIED bz_closed"
title="VERIFIED FIXED - CRASH: after moving the content down and undoing"
href="show_bug.cgi?id=124675">tdf#124675</a> sw: fix crash when moving SwTextFrame in table to prev page
The problem is that the SwTabFrame and SwRowFrame that are being
iterated are deleted:
7 SwFrame::DestroyFrame(SwFrame*) (pFrame=0x79052c0) at
sw/source/core/layout/ssfrm.cxx:386
8 SwTabFrame::RemoveFollowFlowLine() (this=0x5bf07d0) at
sw/source/core/layout/tabfrm.cxx:907
9 SwTabFrame::MakeAll(OutputDevice*) (this=0x5bf07d0) at
sw/source/core/layout/tabfrm.cxx:1839
10 SwFrame::PrepareMake(OutputDevice*) (this=0x5bf07d0) at
sw/source/core/layout/calcmove.cxx:344
11 SwFrame::Calc(OutputDevice*) const (this=0x5bf07d0) at
sw/source/core/layout/trvlfrm.cxx:1790
12 SwFrame::PrepareMake(OutputDevice*) (this=0x603a570) at
sw/source/core/layout/calcmove.cxx:247
13 SwFrame::Calc(OutputDevice*) const (this=0x603a570) at
sw/source/core/layout/trvlfrm.cxx:1790
14 SwFrame::PrepareMake(OutputDevice*) (this=0x5daf120) at
sw/source/core/layout/calcmove.cxx:247
15 SwFrame::Calc(OutputDevice*) const (this=0x5daf120) at
sw/source/core/layout/trvlfrm.cxx:1790
16 SwFrame::PrepareMake(OutputDevice*) (this=0x6005ca0) at
sw/source/core/layout/calcmove.cxx:247
17 SwFrame::Calc(OutputDevice*) const (this=0x6005ca0) at
sw/source/core/layout/trvlfrm.cxx:1790
18 SwFrame::MakePos() (this=0x6094330) at
sw/source/core/layout/calcmove.cxx:490
19 SwTextFrame::MakePos() (this=0x6094330) at
sw/source/core/text/frmform.cxx:343
20 SwContentFrame::MakeAll(OutputDevice*) (this=0x6094330) at
sw/source/core/layout/calcmove.cxx:1346
21 SwFrame::OptPrepareMake() (this=0x6094330) at
sw/source/core/layout/calcmove.cxx:368
22 SwFrame::OptCalc() const (this=0x6094330) at
sw/source/core/inc/frame.hxx:1060
23 SwLayAction::FormatLayout(OutputDevice*, SwLayoutFrame*, bool)
(this=0x7ffc6da48350, pLay=0x8a349c0, bAddRect=false) at
sw/source/core/layout/layact.cxx:1362
24 SwLayAction::FormatLayout(OutputDevice*, SwLayoutFrame*, bool)
(this=0x7ffc6da48350, pLay=0x79052c0, bAddRect=false) at
sw/source/core/layout/layact.cxx:1357
25 SwLayAction::FormatLayoutTab(SwTabFrame*, bool) (this=0x7ffc6da48350,
pTab=0x7a9c300, bAddRect=false) at sw/source/core/layout/layact.cxx:1569
26 SwLayAction::FormatLayout(OutputDevice*, SwLayoutFrame*, bool)
(this=0x7ffc6da48350, pLay=0x7c30300, bAddRect=true) at
sw/source/core/layout/layact.cxx:1354
27 SwLayAction::FormatLayout(OutputDevice*, SwLayoutFrame*, bool)
(this=0x7ffc6da48350, pLay=0x79e1780, bAddRect=true) at
sw/source/core/layout/layact.cxx:1357
28 SwLayAction::InternalAction(OutputDevice*) (this=0x7ffc6da48350) at
sw/source/core/layout/layact.cxx:546
They are deleted because the last SwTextFrame was moved via MoveBwd() to
the previous page, and is formatted there.
(regression from commit 18765b9fa739337d2d891513f6e2fb7c3ce23b50)
Prevent this via:
* delete-guard for the SwRowFrame - causing RemoveFollowFlowLine() to
return early (also, let it return false, so the Join() isn't even
called, although that doesn't make a difference in practice because
of the next item:)
* join-guard for the SwTabFrame - otherwise tabfrm.cxx:2199 will Join()
it anyway
This means that when the page with the follow-frame is done formatting,
the empty SwTabFrame with no SwTextFrame in it will remain. Fortunately
this is not a problem, because due to the moving, the previous page will
be invalid and layact.cxx:613 will iterate to the previous page and
format it again; then tabfrm:2199 of the master SwTabFrame will detect
that the follow SwTabFrame is empty and Join() it.
<a href="https://cgit.freedesktop.org/libreoffice/core/commit/?id=cc5916cd314a27b0cc99560ab887480026630a95">https://cgit.freedesktop.org/libreoffice/core/commit/?id=cc5916cd314a27b0cc99560ab887480026630a95</a></pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>