package/source/zipapi/XBufferedThreadedStream.cxx | 20 +++++--------------- package/source/zipapi/XBufferedThreadedStream.hxx | 4 ++-- 2 files changed, 7 insertions(+), 17 deletions(-)
New commits: commit 2a7fa39bc1fb3a81fdcc632853aef224f4793f8a Author: Caolán McNamara <caol...@redhat.com> Date: Fri Nov 24 14:05:58 2017 +0000 fix attempt to save and rethrow exception Change-Id: Idff6ffef536d87d85f1092b3316d65da83527711 Reviewed-on: https://gerrit.libreoffice.org/45229 Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/package/source/zipapi/XBufferedThreadedStream.cxx b/package/source/zipapi/XBufferedThreadedStream.cxx index 82bb992f0128..2c36b73ea409 100644 --- a/package/source/zipapi/XBufferedThreadedStream.cxx +++ b/package/source/zipapi/XBufferedThreadedStream.cxx @@ -9,6 +9,7 @@ #include "XBufferedThreadedStream.hxx" #include <com/sun/star/packages/zip/ZipIOException.hpp> +#include <cppuhelper/exc_hlp.hxx> using namespace css::uno; using com::sun::star::packages::zip::ZipIOException; @@ -27,20 +28,10 @@ private: { mxStream.produce(); } - catch( const RuntimeException &e ) - { - SAL_WARN("package", "RuntimeException from unbuffered Stream " << e ); - mxStream.saveException( new RuntimeException( e ) ); - } - catch( const ZipIOException &e ) - { - SAL_WARN("package", "ZipIOException from unbuffered Stream " << e ); - mxStream.saveException( new ZipIOException( e ) ); - } - catch( const Exception &e ) + catch (const css::uno::Exception &e) { SAL_WARN("package", "Unexpected " << e ); - mxStream.saveException( new Exception( e ) ); + mxStream.saveException(cppu::getCaughtException()); } mxStream.setTerminateThread(); @@ -58,7 +49,6 @@ XBufferedThreadedStream::XBufferedThreadedStream( , mnOffset( 0 ) , mxUnzippingThread( new UnzippingThread(*this) ) , mbTerminateThread( false ) -, maSavedException( nullptr ) { mxUnzippingThread->launch(); } @@ -116,8 +106,8 @@ const Buffer& XBufferedThreadedStream::getNextBlock() if( maPendingBuffers.empty() ) { maInUseBuffer = Buffer(); - if( maSavedException ) - throw *maSavedException; + if (maSavedException.hasValue()) + cppu::throwException(maSavedException); } else { diff --git a/package/source/zipapi/XBufferedThreadedStream.hxx b/package/source/zipapi/XBufferedThreadedStream.hxx index 8bf3c5eb1283..b99864fbb268 100644 --- a/package/source/zipapi/XBufferedThreadedStream.hxx +++ b/package/source/zipapi/XBufferedThreadedStream.hxx @@ -37,7 +37,7 @@ private: std::condition_variable maBufferProduceResume; bool mbTerminateThread; /// indicates the failure of one of the threads - css::uno::Exception *maSavedException; /// exception caught during unzipping is saved to be thrown during reading + css::uno::Any maSavedException; /// exception caught during unzipping is saved to be thrown during reading static const size_t nBufferLowWater = 2; static const size_t nBufferHighWater = 4; @@ -66,7 +66,7 @@ public: void produce(); void setTerminateThread(); - void saveException( css::uno::Exception *e ) { maSavedException = e; } + void saveException(const css::uno::Any &rAny) { maSavedException = rAny; } // XInputStream virtual sal_Int32 SAL_CALL readBytes( css::uno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead ) override;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits