diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-06-03 08:48:20 +0100 |
---|---|---|
committer | Lionel Elie Mamane <lionel@mamane.lu> | 2016-06-03 08:50:01 +0000 |
commit | f6ffb68e7fe9183bc7406341934bc8c55b3192df (patch) | |
tree | 3cfff33fc91a8f36d7c7f965072b18c1a27ec8ad | |
parent | 646be121eba7c3d833161a7115b4a788c2cc6474 (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.cxx | 17 |
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 ) { |