From f1694b3f189c0893d7987bcb19f1c682c7afc368 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Thu, 2 Oct 2014 14:29:45 +0100 Subject: coverity#1158274 Uncaught exception Change-Id: Icfbe30efa3ebd63620a900e345e4b4a74070b021 --- sax/source/expatwrap/saxwriter.cxx | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'sax') diff --git a/sax/source/expatwrap/saxwriter.cxx b/sax/source/expatwrap/saxwriter.cxx index 79374ab4cd92..b6629161ee95 100644 --- a/sax/source/expatwrap/saxwriter.cxx +++ b/sax/source/expatwrap/saxwriter.cxx @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -891,17 +892,27 @@ public: // XActiveDataSource virtual void SAL_CALL setOutputStream(const Reference< XOutputStream > & aStream) throw (RuntimeException, std::exception) SAL_OVERRIDE { - // temporary: set same stream again to clear buffer - if ( m_out == aStream && m_pSaxWriterHelper && m_bDocStarted ) - m_pSaxWriterHelper->clearBuffer(); - else + try + { + // temporary: set same stream again to clear buffer + if ( m_out == aStream && m_pSaxWriterHelper && m_bDocStarted ) + m_pSaxWriterHelper->clearBuffer(); + else + { + m_out = aStream; + delete m_pSaxWriterHelper; + m_pSaxWriterHelper = new SaxWriterHelper(m_out); + m_bDocStarted = false; + m_nLevel = 0; + m_bIsCDATA = false; + } + } + catch (const SAXException& e) { - m_out = aStream; - delete m_pSaxWriterHelper; - m_pSaxWriterHelper = new SaxWriterHelper(m_out); - m_bDocStarted = false; - m_nLevel = 0; - m_bIsCDATA = false; + throw css::lang::WrappedTargetRuntimeException( + e.Message, + static_cast < OWeakObject * > ( this ), + e.WrappedException); } } virtual Reference< XOutputStream > SAL_CALL getOutputStream(void) -- cgit