summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-06-03 08:48:20 +0100
committerLionel Elie Mamane <lionel@mamane.lu>2016-06-03 08:50:01 +0000
commitf6ffb68e7fe9183bc7406341934bc8c55b3192df (patch)
tree3cfff33fc91a8f36d7c7f965072b18c1a27ec8ad
parent646be121eba7c3d833161a7115b4a788c2cc6474 (diff)
Resolves: tdf#55566 opening two docs with open document macro events can crash
OfficeDocumentsManager::buildDocumentsList was set up to ignore disposed documents, but didn't ignore documents which were still uninitialized (i.e. waiting for the macro warning dialog of the other in-construction document to return a decision) (cherry picked from commit 9334aa604f73bf659088c6a1cacba854cfdee5e4) (cherry picked from commit 63c54ea482ad11b5fcb883f1583c62456cf34ba5) Change-Id: I936e29ab6fad14a33609e8d57d11d7d0178075e4 Reviewed-on: https://gerrit.libreoffice.org/25854 Reviewed-by: Lionel Elie Mamane <lionel@mamane.lu> Tested-by: Lionel Elie Mamane <lionel@mamane.lu>
-rw-r--r--ucb/source/ucp/tdoc/tdoc_docmgr.cxx17
1 files changed, 7 insertions, 10 deletions
diff --git a/ucb/source/ucp/tdoc/tdoc_docmgr.cxx b/ucb/source/ucp/tdoc/tdoc_docmgr.cxx
index 17f727b803ec..004ef56fc1d7 100644
--- a/ucb/source/ucp/tdoc/tdoc_docmgr.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_docmgr.cxx
@@ -40,6 +40,7 @@
#include "com/sun/star/frame/XStorable.hpp"
#include "com/sun/star/frame/ModuleManager.hpp"
#include "com/sun/star/lang/DisposedException.hpp"
+#include "com/sun/star/lang/NotInitializedException.hpp"
#include "com/sun/star/util/XCloseBroadcaster.hpp"
#include "tdoc_docmgr.hxx"
@@ -424,12 +425,8 @@ void SAL_CALL OfficeDocumentsManager::documentEventOccured(
}
}
-
-
// lang::XDocumentEventListener (base of document::XDocumentEventListener)
-
-
// virtual
void SAL_CALL OfficeDocumentsManager::disposing(
const lang::EventObject& /*Source*/ )
@@ -437,12 +434,8 @@ void SAL_CALL OfficeDocumentsManager::disposing(
{
}
-
-
// Non-interface.
-
-
void OfficeDocumentsManager::buildDocumentsList()
{
uno::Reference< container::XEnumeration > xEnum
@@ -508,12 +501,16 @@ void OfficeDocumentsManager::buildDocumentsList()
catch ( lang::DisposedException const & )
{
// Note: Due to race conditions the XEnumeration can
- // contains docs that already have been closed
+ // contain docs that have already been closed
+ }
+ catch ( lang::NotInitializedException const & )
+ {
+ // Note: Due to race conditions the XEnumeration can
+ // contain docs that are still uninitialized
}
}
}
-
uno::Reference< embed::XStorage >
OfficeDocumentsManager::queryStorage( const OUString & rDocId )
{