[Libreoffice-commits] core.git: Branch 'libreoffice-7-1' - sc/source

Eike Rathke (via logerrit) logerrit at kemper.freedesktop.org
Wed May 26 06:57:17 UTC 2021


 sc/source/ui/docshell/docsh4.cxx |   10 ++++++++++
 1 file changed, 10 insertions(+)

New commits:
commit bdcf20ada557ef85297869014e678743f41d0815
Author:     Eike Rathke <erack at redhat.com>
AuthorDate: Tue May 25 22:33:46 2021 +0200
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Wed May 26 08:56:40 2021 +0200

    Related: tdf#81757 Do not even try to re-enter ScDocShell::Do*Recalc()
    
    That happened when loading bug doc
    https://bugs.documentfoundation.org/attachment.cgi?id=103462
    where form selection events fire asynchronous recalcul() and
    BASIC Main also calls recalcul.
    
    Change-Id: Ic27fb340c7b5019453723c7cabe2122905d400f5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116133
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins
    (cherry picked from commit 807f3508c9319d7f94820ea1282e306594418fce)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116152
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>

diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 111fb8262234..32e14f99eff4 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -1421,6 +1421,11 @@ bool ScDocShell::ExecuteChangeProtectionDialog( bool bJustQueryIfProtected )
 
 void ScDocShell::DoRecalc( bool bApi )
 {
+    if (m_aDocument.IsInDocShellRecalc())
+    {
+        SAL_WARN("sc","ScDocShell::DoRecalc tries re-entering while in Recalc; probably Forms->BASIC->Dispatcher.");
+        return;
+    }
     ScDocShellRecalcGuard aGuard(m_aDocument);
     bool bDone = false;
     ScTabViewShell* pSh = GetBestViewShell();
@@ -1467,6 +1472,11 @@ void ScDocShell::DoRecalc( bool bApi )
 
 void ScDocShell::DoHardRecalc()
 {
+    if (m_aDocument.IsInDocShellRecalc())
+    {
+        SAL_WARN("sc","ScDocShell::DoHardRecalc tries re-entering while in Recalc; probably Forms->BASIC->Dispatcher.");
+        return;
+    }
     auto start = std::chrono::steady_clock::now();
     ScDocShellRecalcGuard aGuard(m_aDocument);
     weld::WaitObject aWaitObj( GetActiveDialogParent() );


More information about the Libreoffice-commits mailing list