[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - sw/source

Michael Stahl mstahl at redhat.com
Fri Jun 5 15:41:44 PDT 2015


 sw/source/core/crsr/crsrsh.cxx |    4 ++++
 1 file changed, 4 insertions(+)

New commits:
commit 4ae19cf8435d78bec75e1c4ea95da9f0aaf35b62
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Jun 5 23:56:07 2015 +0200

    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
    (cherry picked from commit 587006cac508616f486aea45e265a170bcccdc87)

diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index a815866..2742a2c 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -285,6 +285,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;


More information about the Libreoffice-commits mailing list