core.git: Branch 'distro/vector/vector-7.5.9' - embeddedobj/source

2024-03-19 Thread Mike Kaganski (via logerrit)
 embeddedobj/source/msole/oleembed.cxx |4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

New commits:
commit d9051a918853b56305d2f894f2858b8246f4726b
Author: Mike Kaganski 
AuthorDate: Tue Mar 19 12:14:34 2024 +0500
Commit: Mike Kaganski 
CommitDate: Wed Mar 20 09:18:39 2024 +0500

Pass m_pOleComponent to lambda by copy

Both m_pOleComponent and the copy are rtl::Reference, so the copy
will ensure the lifetime of the object.
See 
https://gerrit.libreoffice.org/c/core/+/164986/2#message-5dd187741df3242f47d1037a1f9c9b0fd9bb1f8e

Change-Id: I092281ce41786682b269ba048f102877117391f7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165013
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 

diff --git a/embeddedobj/source/msole/oleembed.cxx 
b/embeddedobj/source/msole/oleembed.cxx
index b946fed792c8..657d27710ca3 100644
--- a/embeddedobj/source/msole/oleembed.cxx
+++ b/embeddedobj/source/msole/oleembed.cxx
@@ -620,8 +620,10 @@ uno::Sequence< sal_Int32 > SAL_CALL 
OleEmbeddedObject::getReachableStates()
 
 // the list of states can only be guessed based on standard verbs,
 // since there is no way to detect what additional verbs do
+// Pass m_pOleComponent to the lambda by copy, to make sure it doesn't 
depend on possible
+// destruction of 'this', while the lock is unset
 return GetReachableStatesList_Impl(
-ExecUnlocked([this] { return m_pOleComponent->GetVerbList(); }, 
aGuard));
+ExecUnlocked([p = m_pOleComponent] { return p->GetVerbList(); }, 
aGuard));
 }
 else
 #endif


core.git: Branch 'distro/vector/vector-7.5.9' - embeddedobj/source

2024-03-18 Thread Mike Kaganski (via logerrit)
 embeddedobj/source/inc/oleembobj.hxx|   11 +++
 embeddedobj/source/msole/oleembed.cxx   |5 +++--
 embeddedobj/source/msole/olepersist.cxx |   11 ---
 3 files changed, 14 insertions(+), 13 deletions(-)

New commits:
commit 695986f7a61fd24b8c5fbb8c3afe0786293c72ed
Author: Mike Kaganski 
AuthorDate: Mon Mar 18 22:14:31 2024 +0500
Commit: Mike Kaganski 
CommitDate: Tue Mar 19 10:21:09 2024 +0500

Release the mutex when calling the OLE method

... which may need to be executed on a different thread.

Change-Id: Id9e4b86fd3eafa49139b21e3817aa1ee8aff3dba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164986
Tested-by: Jenkins
Reviewed-by: Mike Kaganski 

diff --git a/embeddedobj/source/inc/oleembobj.hxx 
b/embeddedobj/source/inc/oleembobj.hxx
index cf7c5ebe4ab4..983f242308cf 100644
--- a/embeddedobj/source/inc/oleembobj.hxx
+++ b/embeddedobj/source/inc/oleembobj.hxx
@@ -468,4 +468,15 @@ private:
 osl::ResettableMutexGuard& m_guard;
 };
 
+namespace
+{
+#if defined(_WIN32)
+template  auto ExecUnlocked(Proc proc, osl::ResettableMutexGuard& 
guard)
+{
+ClearedMutexArea area(guard);
+return proc();
+}
+#endif
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embeddedobj/source/msole/oleembed.cxx 
b/embeddedobj/source/msole/oleembed.cxx
index 63d5f700b089..b946fed792c8 100644
--- a/embeddedobj/source/msole/oleembed.cxx
+++ b/embeddedobj/source/msole/oleembed.cxx
@@ -601,7 +601,7 @@ uno::Sequence< sal_Int32 > SAL_CALL 
OleEmbeddedObject::getReachableStates()
 }
 // end wrapping related part 
 
-::osl::MutexGuard aGuard( m_aMutex );
+::osl::ResettableMutexGuard aGuard( m_aMutex );
 if ( m_bDisposed )
 throw lang::DisposedException(); // TODO
 
@@ -620,7 +620,8 @@ uno::Sequence< sal_Int32 > SAL_CALL 
OleEmbeddedObject::getReachableStates()
 
 // the list of states can only be guessed based on standard verbs,
 // since there is no way to detect what additional verbs do
-return GetReachableStatesList_Impl( m_pOleComponent->GetVerbList() );
+return GetReachableStatesList_Impl(
+ExecUnlocked([this] { return m_pOleComponent->GetVerbList(); }, 
aGuard));
 }
 else
 #endif
diff --git a/embeddedobj/source/msole/olepersist.cxx 
b/embeddedobj/source/msole/olepersist.cxx
index 381fc7b0d68c..e6af72fedccf 100644
--- a/embeddedobj/source/msole/olepersist.cxx
+++ b/embeddedobj/source/msole/olepersist.cxx
@@ -58,17 +58,6 @@
 using namespace ::com::sun::star;
 using namespace ::comphelper;
 
-namespace
-{
-#if defined(_WIN32)
-template  auto ExecUnlocked(Proc proc, osl::ResettableMutexGuard& 
guard)
-{
-ClearedMutexArea area(guard);
-return proc();
-}
-#endif
-}
-
 
 bool KillFile_Impl( const OUString& aURL, const uno::Reference< 
uno::XComponentContext >& xContext )
 {