summaryrefslogtreecommitdiff
path: root/package/source/zippackage/ZipPackage.cxx
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-05-24 15:47:30 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-05-25 21:46:49 +0200
commit3a51daeace695ead38cfd82b3a0f1e6f25a32e0f (patch)
treeaf3ef1144aef6ed62f4ab99b88d13b41bd3b3694 /package/source/zippackage/ZipPackage.cxx
parentff3bdde2527123fc9e011ff0d93e958174632186 (diff)
Improve re-throwing of UNO exceptions
(*) if we are already throwing a Wrapped*Exception, get the exception using cppu::getCaughtexception. (*) when catching and then immediately throwing UNO exceptions, use cppu::getCaughtException to prevent exception slicing (*) if we are going to catch an exception and then immediately throw a RuntimeException, rather throw a WrappedTargetRuntimeException and preserve the original exception information. Change-Id: Ia7a501a50ae0e6f4d05186333c8517fdcb17d558 Reviewed-on: https://gerrit.libreoffice.org/54692 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'package/source/zippackage/ZipPackage.cxx')
-rw-r--r--package/source/zippackage/ZipPackage.cxx30
1 files changed, 18 insertions, 12 deletions
diff --git a/package/source/zippackage/ZipPackage.cxx b/package/source/zippackage/ZipPackage.cxx
index a04580dcaeae..45eda6d4837e 100644
--- a/package/source/zippackage/ZipPackage.cxx
+++ b/package/source/zippackage/ZipPackage.cxx
@@ -1037,12 +1037,13 @@ void ZipPackage::WriteMimetypeMagicFile( ZipOutputStream& aZipOut )
aZipOut.rawWrite(aType);
aZipOut.rawCloseEntry();
}
- catch ( const css::io::IOException & r )
+ catch ( const css::io::IOException & )
{
+ css::uno::Any anyEx = cppu::getCaughtException();
throw WrappedTargetException(
THROW_WHERE "Error adding mimetype to the ZipOutputStream!",
static_cast < OWeakObject * > ( this ),
- makeAny( r ) );
+ anyEx );
}
}
@@ -1432,10 +1433,11 @@ void SAL_CALL ZipPackage::commitChanges()
{
xTempInStream = writeTempFile();
}
- catch (const ucb::ContentCreationException& r)
+ catch (const ucb::ContentCreationException&)
{
+ css::uno::Any anyEx = cppu::getCaughtException();
throw WrappedTargetException(THROW_WHERE "Temporary file should be creatable!",
- static_cast < OWeakObject * > ( this ), makeAny ( r ) );
+ static_cast < OWeakObject * > ( this ), anyEx );
}
if ( xTempInStream.is() )
{
@@ -1445,10 +1447,11 @@ void SAL_CALL ZipPackage::commitChanges()
{
xTempSeek->seek( 0 );
}
- catch( const uno::Exception& r )
+ catch( const uno::Exception& )
{
+ css::uno::Any anyEx = cppu::getCaughtException();
throw WrappedTargetException(THROW_WHERE "Temporary file should be seekable!",
- static_cast < OWeakObject * > ( this ), makeAny ( r ) );
+ static_cast < OWeakObject * > ( this ), anyEx );
}
try
@@ -1456,10 +1459,11 @@ void SAL_CALL ZipPackage::commitChanges()
// connect to the temporary stream
ConnectTo( xTempInStream );
}
- catch( const io::IOException& r )
+ catch( const io::IOException& )
{
+ css::uno::Any anyEx = cppu::getCaughtException();
throw WrappedTargetException(THROW_WHERE "Temporary file should be connectable!",
- static_cast < OWeakObject * > ( this ), makeAny ( r ) );
+ static_cast < OWeakObject * > ( this ), anyEx );
}
if ( m_eMode == e_IMode_XStream )
@@ -1484,10 +1488,11 @@ void SAL_CALL ZipPackage::commitChanges()
// after successful truncation the original file contents are already lost
xTruncate->truncate();
}
- catch( const uno::Exception& r )
+ catch( const uno::Exception& )
{
+ css::uno::Any anyEx = cppu::getCaughtException();
throw WrappedTargetException(THROW_WHERE "This package is read only!",
- static_cast < OWeakObject * > ( this ), makeAny ( r ) );
+ static_cast < OWeakObject * > ( this ), anyEx );
}
try
@@ -1579,15 +1584,16 @@ void SAL_CALL ZipPackage::commitChanges()
// if the file is still not corrupted, it can become after the next step
aContent.executeCommand ("transfer", Any(aInfo) );
}
- catch ( const css::uno::Exception& r )
+ catch ( const css::uno::Exception& )
{
if ( bCanBeCorrupted )
DisconnectFromTargetAndThrowException_Impl( xTempInStream );
+ css::uno::Any anyEx = cppu::getCaughtException();
throw WrappedTargetException(
THROW_WHERE "This package may be read only!",
static_cast < OWeakObject * > ( this ),
- makeAny ( r ) );
+ anyEx );
}
}
}