framework/source/services/autorecovery.cxx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
New commits: commit 437377bbda0ac6b0be3c4f6fac59a4c782eecef8 Author: Michael Stahl <mst...@redhat.com> Date: Thu Sep 15 15:11:41 2016 +0200 tdf#101771 framework: avoid deadlock in AutoRecovery AutoRecovery::implts_updateModifiedState() should call external functions like isModified() before acquiring its own mutex. (regression from 403eefe81b8a0afe888c60452c17d6b2c5d8343f) Change-Id: Iae56eec2b6f392b7a7f65a5f54c73efa746263d0 diff --git a/framework/source/services/autorecovery.cxx b/framework/source/services/autorecovery.cxx index 76033d8..a4687b3 100644 --- a/framework/source/services/autorecovery.cxx +++ b/framework/source/services/autorecovery.cxx @@ -2593,6 +2593,12 @@ void AutoRecovery::implts_markDocumentModifiedAgainstLastBackup(const css::uno:: void AutoRecovery::implts_updateModifiedState(const css::uno::Reference< css::frame::XModel >& xDocument) { + // use true as fallback to get every document on EmergencySave/AutoRecovery! + bool bModified = true; + css::uno::Reference< css::util::XModifiable > xModify(xDocument, css::uno::UNO_QUERY); + if (xModify.is()) + bModified = xModify->isModified(); + CacheLockGuard aCacheLock(this, cppu::WeakComponentImplHelperBase::rBHelper.rMutex, m_nDocCacheLock, LOCK_FOR_CACHE_USE); /* SAFE */ { @@ -2603,11 +2609,6 @@ void AutoRecovery::implts_updateModifiedState(const css::uno::Reference< css::fr { AutoRecovery::TDocumentInfo& rInfo = *pIt; - // use sal_True as fallback ... so we recognize every document on EmergencySave/AutoRecovery! - bool bModified = true; - css::uno::Reference< css::util::XModifiable > xModify(xDocument, css::uno::UNO_QUERY); - if (xModify.is()) - bModified = xModify->isModified(); if (bModified) { rInfo.DocumentState |= AutoRecovery::E_MODIFIED; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits