diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2020-07-13 12:02:59 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2020-07-14 10:40:24 +0200 |
commit | 08161f853571e3d4113c40a5d9d2cc24dca7506f (patch) | |
tree | c812f5bb7d0fadaf5bae782a3d4ef3983d10054e /package/source/zipapi | |
parent | 30ee17749a8c755982e8927e68fbe162844c7b03 (diff) |
fix encrypted parallel zip saving (tdf#134332)
ZipOutputEntryBase::processDeflated() was calling isDeflaterFinished()
to find out whether to finalize and dispose m_xCipherContext.
With ZipOutputEntryParallel this was always true, so the context
was disposed after the first call. That was originally correct, because
originally processDeflated() was called just once at the very end, but
353d4528b8ad8abca9a13f3016632e42bab7afde changed to calling it several
times.
Change-Id: I1e4a0c887e4ba7ac7b20fa315169eaa911335fde
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98625
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'package/source/zipapi')
-rw-r--r-- | package/source/zipapi/ZipOutputEntry.cxx | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/package/source/zipapi/ZipOutputEntry.cxx b/package/source/zipapi/ZipOutputEntry.cxx index c63dc1691136..c9a4943cbe19 100644 --- a/package/source/zipapi/ZipOutputEntry.cxx +++ b/package/source/zipapi/ZipOutputEntry.cxx @@ -358,6 +358,7 @@ ZipOutputEntryParallel::ZipOutputEntryParallel( : ZipOutputEntryBase(rxOutput, rxContext, rEntry, pStream, bEncrypt, true) , totalIn(0) , totalOut(0) +, finished(false) { } @@ -381,6 +382,7 @@ void ZipOutputEntryParallel::writeStream(const uno::Reference< io::XInputStream void ZipOutputEntryParallel::finishDeflater() { // ThreadedDeflater is called synchronously in one call, so nothing to do here. + finished = true; } sal_Int64 ZipOutputEntryParallel::getDeflaterTotalIn() const @@ -397,11 +399,12 @@ void ZipOutputEntryParallel::deflaterReset() { totalIn = 0; totalOut = 0; + finished = false; } bool ZipOutputEntryParallel::isDeflaterFinished() const { - return true; + return finished; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |