diff options
Diffstat (limited to 'package')
-rw-r--r-- | package/inc/ZipOutputEntry.hxx | 2 | ||||
-rw-r--r-- | package/source/zipapi/ZipOutputEntry.cxx | 21 |
2 files changed, 8 insertions, 15 deletions
diff --git a/package/inc/ZipOutputEntry.hxx b/package/inc/ZipOutputEntry.hxx index 9ef4466ed742..078c07359de5 100644 --- a/package/inc/ZipOutputEntry.hxx +++ b/package/inc/ZipOutputEntry.hxx @@ -110,7 +110,7 @@ protected: class ZipOutputEntryInThread final : public ZipOutputEntry { class Task; - OUString m_aTempURL; + css::uno::Reference<css::io::XTempFile> m_xTempFile; std::exception_ptr m_aParallelDeflateException; std::atomic<bool> m_bFinished; diff --git a/package/source/zipapi/ZipOutputEntry.cxx b/package/source/zipapi/ZipOutputEntry.cxx index a30eba7c981c..734840865a14 100644 --- a/package/source/zipapi/ZipOutputEntry.cxx +++ b/package/source/zipapi/ZipOutputEntry.cxx @@ -250,17 +250,12 @@ ZipOutputEntryInThread::ZipOutputEntryInThread( void ZipOutputEntryInThread::createBufferFile() { - assert(!m_xOutStream.is() && m_aTempURL.isEmpty() && + assert(!m_xOutStream && !m_xTempFile && "should only be called in the threaded mode where there is no existing stream yet"); - uno::Reference < io::XTempFile > xTempFile( + m_xTempFile.set( io::TempFile::create(m_xContext), uno::UNO_SET_THROW ); - xTempFile->setRemoveFile(false); - m_aTempURL = xTempFile->getUri(); - assert(!m_aTempURL.isEmpty()); - - uno::Reference < ucb::XSimpleFileAccess3 > xTempAccess(ucb::SimpleFileAccess::create(m_xContext)); - m_xOutStream = xTempAccess->openFileWrite(m_aTempURL); + m_xOutStream = m_xTempFile->getOutputStream(); } void ZipOutputEntryInThread::closeBufferFile() @@ -271,15 +266,13 @@ void ZipOutputEntryInThread::closeBufferFile() void ZipOutputEntryInThread::deleteBufferFile() { - assert(!m_xOutStream.is() && !m_aTempURL.isEmpty()); - uno::Reference < ucb::XSimpleFileAccess3 > xAccess(ucb::SimpleFileAccess::create(m_xContext)); - xAccess->kill(m_aTempURL); + assert(!m_xOutStream.is() && m_xTempFile); + m_xTempFile.clear(); } uno::Reference< io::XInputStream > ZipOutputEntryInThread::getData() const { - uno::Reference < ucb::XSimpleFileAccess3 > xTempAccess(ucb::SimpleFileAccess::create(m_xContext)); - return xTempAccess->openFileRead(m_aTempURL); + return m_xTempFile->getInputStream(); } class ZipOutputEntryInThread::Task : public comphelper::ThreadTask @@ -313,7 +306,7 @@ private: { if (mpEntry->m_xOutStream.is()) mpEntry->closeBufferFile(); - if (!mpEntry->m_aTempURL.isEmpty()) + if (mpEntry->m_xTempFile) mpEntry->deleteBufferFile(); } catch (uno::Exception const&) |