diff options
-rw-r--r-- | sfx2/source/doc/objstor.cxx | 10 | ||||
-rw-r--r-- | writerfilter/qa/cppunittests/rtftok/testrtftok.cxx | 10 | ||||
-rw-r--r-- | writerfilter/source/filter/RtfFilter.cxx | 7 |
3 files changed, 21 insertions, 6 deletions
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx index 3752a51dbcaf..45b1cb28fa37 100644 --- a/sfx2/source/doc/objstor.cxx +++ b/sfx2/source/doc/objstor.cxx @@ -40,6 +40,7 @@ #include <com/sun/star/task/FutureDocumentVersionProductUpdateRequest.hpp> #include <com/sun/star/task/InteractionClassification.hpp> #include <com/sun/star/lang/XInitialization.hpp> +#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp> #include <com/sun/star/document/MacroExecMode.hpp> #include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp> #include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp> @@ -2222,9 +2223,14 @@ sal_Bool SfxObjectShell::ImportFrom( SfxMedium& rMedium, bool bInsert ) { SetError( ERRCODE_IO_BROKENPACKAGE, "Badness in the underlying package format." ); } - catch (const io::WrongFormatException& rException) + catch (const lang::WrappedTargetRuntimeException& rWrapped) { - SetError( *new StringErrorInfo( ERRCODE_SFX_FORMAT_ROWCOL, rException.Message, ERRCODE_BUTTON_OK | ERRCODE_MSG_ERROR ), ""); + io::WrongFormatException e; + if (rWrapped.TargetException >>= e) + { + SetError(*new StringErrorInfo(ERRCODE_SFX_FORMAT_ROWCOL, + e.Message, ERRCODE_BUTTON_OK | ERRCODE_MSG_ERROR ), ""); + } } catch(...) {} diff --git a/writerfilter/qa/cppunittests/rtftok/testrtftok.cxx b/writerfilter/qa/cppunittests/rtftok/testrtftok.cxx index 7cdec4979f9d..e5e656c8d549 100644 --- a/writerfilter/qa/cppunittests/rtftok/testrtftok.cxx +++ b/writerfilter/qa/cppunittests/rtftok/testrtftok.cxx @@ -30,6 +30,7 @@ #include <test/bootstrapfixture.hxx> #include <com/sun/star/document/XFilter.hpp> #include <com/sun/star/io/WrongFormatException.hpp> +#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp> #include <osl/file.hxx> #include <osl/process.h> @@ -70,9 +71,14 @@ bool RtfTest::load(const OUString &, const OUString &rURL, const OUString &) { return m_xFilter->filter(aDescriptor); } - catch (const io::WrongFormatException&) + catch (const lang::WrappedTargetRuntimeException& rWrapped) { - return false; + io::WrongFormatException e; + if (rWrapped.TargetException >>= e) + { + return false; + } + throw; } } diff --git a/writerfilter/source/filter/RtfFilter.cxx b/writerfilter/source/filter/RtfFilter.cxx index 9b7a87900b95..f80d1b064069 100644 --- a/writerfilter/source/filter/RtfFilter.cxx +++ b/writerfilter/source/filter/RtfFilter.cxx @@ -28,6 +28,7 @@ #include <com/sun/star/frame/XFrame.hpp> #include <com/sun/star/task/XStatusIndicator.hpp> #include <com/sun/star/io/WrongFormatException.hpp> +#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp> #ifdef DBG_COPYPASTE #include <unotools/localfilehelper.hxx> #include <tools/stream.hxx> @@ -117,9 +118,11 @@ sal_Bool RtfFilter::filter( const uno::Sequence< beans::PropertyValue >& aDescri sal_uInt32 nEndTime = osl_getGlobalTimer(); SAL_INFO("writerfilter.profile", OSL_THIS_FUNC << " finished in " << nEndTime - nStartTime << " ms"); } - catch (const io::WrongFormatException&) + catch (const io::WrongFormatException& e) { - throw; + // cannot throw WrongFormatException directly :( + throw lang::WrappedTargetRuntimeException("", + static_cast<OWeakObject*>(this), uno::makeAny(e)); } catch (const uno::Exception& e) { |