diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-01-16 16:23:30 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-01-16 17:06:07 +0100 |
commit | beacee6fad46aa2c8fc813bb0150e5c7a5175b26 (patch) | |
tree | 0ab2db245ebb4da5239b6014cdfb2ab18799246b | |
parent | 5090267eada3d68a618769c5dbae8b2ee8d6dab5 (diff) |
rhbz#818557: fix it differently: SwDocShell::_LoadStyles():
Try to prevent pushing of SfxShells from this function via EndAllAction
and SwView::AttrChangedNotify() by setting a ridiculous pre-exising
global bNoInterrupt variable.
Change-Id: I9c91ca882891c8dfcd9dc08ba197233cfefddefd
-rw-r--r-- | sw/source/ui/app/docst.cxx | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sw/source/ui/app/docst.cxx b/sw/source/ui/app/docst.cxx index ddee6257b9d1..b57aacc940a7 100644 --- a/sw/source/ui/app/docst.cxx +++ b/sw/source/ui/app/docst.cxx @@ -22,6 +22,8 @@ #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/container/XNameAccess.hpp> +#include <comphelper/flagguard.hxx> + #include <hintids.hxx> #include <sfx2/app.hxx> #include <svl/whiter.hxx> @@ -77,6 +79,8 @@ #include <paratr.hxx> //#outline level,add by zhaojianwei +extern bool bNoInterrupt; // in mainwn.cxx + using namespace ::com::sun::star; void SwDocShell::StateStyleSheet(SfxItemSet& rSet, SwWrtShell* pSh) @@ -1276,6 +1280,11 @@ void SwDocShell::_LoadStyles( SfxObjectShell& rSource, sal_Bool bPreserveCurrent ((SwDocShell&)rSource).pDoc->SetFixFields(false, NULL); if( pWrtShell ) { + // rhbz#818557, fdo#58893: EndAllAction will call SelectShell(), + // which pushes a bunch of SfxShells that are not cleared + // (for unknown reasons) when closing the document, causing crash; + // setting bNoInterrupt appears to avoid the problem. + ::comphelper::FlagRestorationGuard g(bNoInterrupt, true); pWrtShell->StartAllAction(); pDoc->ReplaceStyles( *((SwDocShell&)rSource).pDoc ); pWrtShell->EndAllAction(); |