diff --git a/src/kcompressiondevice.cpp b/src/kcompressiondevice.cpp --- a/src/kcompressiondevice.cpp +++ b/src/kcompressiondevice.cpp @@ -341,6 +341,7 @@ // Still not done, re-init and try again filter->init(filter->mode()); + d->result = KFilterBase::Ok; } filter->setOutBuffer(data, availOut); } diff --git a/src/kgzipfilter.cpp b/src/kgzipfilter.cpp --- a/src/kgzipfilter.cpp +++ b/src/kgzipfilter.cpp @@ -103,12 +103,12 @@ //qCDebug(KArchiveLog) << "deflateInit returned " << result; return false; } + d->compressed = true; } else { //qCWarning(KArchiveLog) << "KGzipFilter: Unsupported mode " << mode << ". Only QIODevice::ReadOnly and QIODevice::WriteOnly supported"; return false; } d->mode = mode; - d->compressed = true; d->headerWritten = false; d->footerWritten = false; d->isInitialized = true; @@ -279,7 +279,7 @@ d->zStream.avail_out -= n; d->zStream.next_in += n; d->zStream.avail_in -= n; - return KFilterBase::Ok; + return d->zStream.avail_in > 0 ? KFilterBase::Ok : KFilterBase::End; } else { return KFilterBase::End; }