diff options
author | Michael Stahl <mstahl@redhat.com> | 2015-06-05 23:56:07 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2015-06-06 00:32:47 +0200 |
commit | 587006cac508616f486aea45e265a170bcccdc87 (patch) | |
tree | 792a0095b756496bf3c2213b14446979dc3f6a97 | |
parent | c27798b20097602739e3e81a5063109b8c66447d (diff) |
tdf#91602: sw: prevent recursive layout crash
SwCrsrShell::UpdateCrsr() calls SwTextFrm::GetCharRect(), which does
layout. It happens that a SdrObject is moved around during layout,
which calls SwDrawContact::Changed(), which believes that there is
no layout active because there is no SwLayAction and
ViewShell::EndAction() has already been called, so we get recursive
layout-in-layout action.
Change-Id: Iad8df4910e3c661150bdf5ac7d777792e69a8f71
-rw-r--r-- | sw/source/core/crsr/crsrsh.cxx | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx index 501a0e8383b3..5464ce356371 100644 --- a/sw/source/core/crsr/crsrsh.cxx +++ b/sw/source/core/crsr/crsrsh.cxx @@ -284,6 +284,10 @@ void SwCrsrShell::EndAction( const bool bIdleEnd, const bool DoSetPosX ) } return; } + else + { + eFlags |= SwCrsrShell::NOCALRECT; // tdf#91602 prevent recursive Action! + } if ( !bIdleEnd ) eFlags |= SwCrsrShell::SCROLLWIN; |