diff options
author | Michael Stahl <mstahl@redhat.com> | 2016-06-23 22:02:04 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2016-06-23 22:39:51 +0200 |
commit | 9084c11fb472f2024e609770ce922c911227e7a8 (patch) | |
tree | e45a09ec09a76f77e174095dcfc9440ba9869971 /package/source | |
parent | 716f4ef1625cece6fe8326213df24c52d56c9432 (diff) |
sfx2: exception on storage commit is an error (related: tdf#91807)
For no good or obvious reason, SfxMedium::StorageCommit_Impl() swallows
embed::UseBackupException if there is a pTempFile, which (as the comment
claims) is "always now". This results in the temp file actually being
copied to the user-visible file and the SaveAs "succeeding", when it
clearly did not.
Also move the exception throwing to the end of ZipOutputStream::finish()
to avoid more memory leaks.
Change-Id: I448cc43291754ef20adfa6b65916282fcc365a11
Diffstat (limited to 'package/source')
-rw-r--r-- | package/source/zipapi/ZipOutputStream.cxx | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/package/source/zipapi/ZipOutputStream.cxx b/package/source/zipapi/ZipOutputStream.cxx index 2daff01fc1c2..41f78b414879 100644 --- a/package/source/zipapi/ZipOutputStream.cxx +++ b/package/source/zipapi/ZipOutputStream.cxx @@ -183,11 +183,6 @@ void ZipOutputStream::finish() // consume all processed entries consumeAllScheduledThreadEntries(); - if (m_aDeflateException.hasValue()) - { // throw once all threads are finished and m_aEntries can be released - ::cppu::throwException(m_aDeflateException); - } - sal_Int32 nOffset= static_cast < sal_Int32 > (m_aChucker.GetPosition()); for (ZipEntry* p : m_aZipList) { @@ -197,6 +192,11 @@ void ZipOutputStream::finish() writeEND( nOffset, static_cast < sal_Int32 > (m_aChucker.GetPosition()) - nOffset); m_xStream->flush(); m_aZipList.clear(); + + if (m_aDeflateException.hasValue()) + { // throw once all threads are finished and m_aEntries can be released + ::cppu::throwException(m_aDeflateException); + } } const css::uno::Reference< css::io::XOutputStream >& ZipOutputStream::getStream() |