sfx2/source/doc/objmisc.cxx |   14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

New commits:
commit bfc43aad0e8eb90e9d3495b940bc2283081f04c6
Author:     Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de>
AuthorDate: Wed Apr 13 08:01:29 2022 +0200
Commit:     Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de>
CommitDate: Thu Apr 14 16:15:25 2022 +0200

    Prevent save interception when sharing Calc doc
    
    Using the dispatch mechanism means that this can be caught by the dispatch 
interceptor
    which we don't want in this place.
    
    Change-Id: Ie7e5f92e6043e2aff98d4887829a3573c12c6d08
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132941
    Tested-by: Jenkins
    Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de>

diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx
index 9acfe6d1651b..a09a7ac9feef 100644
--- a/sfx2/source/doc/objmisc.cxx
+++ b/sfx2/source/doc/objmisc.cxx
@@ -97,6 +97,7 @@
 #include <workwin.hxx>
 #include <sfx2/sfxdlg.hxx>
 #include <sfx2/infobar.hxx>
+#include <sfx2/sfxbasemodel.hxx>
 #include <openflag.hxx>
 #include "objstor.hxx"
 #include <appopen.hxx>
@@ -507,9 +508,16 @@ bool SfxObjectShell::SwitchToShared( bool bShared, bool 
bSave )
             {
                 // TODO/LATER: currently the application guards against the 
reentrance problem
                 SetModified(); // the modified flag has to be set to let the 
document be stored with the shared flag
-                const SfxPoolItem* pItem = 
pViewFrame->GetBindings().ExecuteSynchron( HasName() ? SID_SAVEDOC : 
SID_SAVEASDOC );
-                const SfxBoolItem* pResult = dynamic_cast<const SfxBoolItem*>( 
pItem  );
-                bResult = ( pResult && pResult->GetValue() );
+                try
+                {
+                    // Do *not* use dispatch mechanism in this place - we 
don't want others (extensions etc.) to intercept this.
+                    pImpl->pBaseModel->store();
+                    bResult = true;
+                }
+                catch (...)
+                {
+                    bResult = false;
+                }
             }
         }
 

Reply via email to