From c3085db4a169ea17f8bc5c0384b71846c5e7a7f9 Mon Sep 17 00:00:00 2001 From: Pixel Date: Tue, 13 Dec 2011 00:55:43 -0800 Subject: Fixing a few bugs and problems in the ZHandle code. --- includes/ZHandle.h | 1 - src/ZHandle.cc | 7 ++++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/includes/ZHandle.h b/includes/ZHandle.h index 63da59a..048e0cb 100644 --- a/includes/ZHandle.h +++ b/includes/ZHandle.h @@ -21,7 +21,6 @@ class ZStream : public Handle { virtual const char * getName(); virtual ssize_t read(void * buf, size_t count) throw (GeneralException); virtual ssize_t write(const void * buf, size_t count) throw (GeneralException); - virtual off_t getSize(); void detach() { m_detached = true; } void flush() { doFlush(false); } private: diff --git a/src/ZHandle.cc b/src/ZHandle.cc index 964f56d..0a43b05 100644 --- a/src/ZHandle.cc +++ b/src/ZHandle.cc @@ -103,7 +103,7 @@ ssize_t Balau::ZStream::write(const void * buf, size_t count) throw (GeneralExce m_zout.next_in = (Bytef *) const_cast(buf); m_zout.avail_in = count; void * obuf = alloca(BLOCK_SIZE); - while ((count != 0) && !m_h->isClosed() && !m_h->isEOF()) { + while ((count != 0) && !m_h->isClosed()) { m_zout.next_out = (Bytef *) obuf; m_zout.avail_out = BLOCK_SIZE; int r = deflate(&m_zout, Z_NO_FLUSH); @@ -115,8 +115,9 @@ ssize_t Balau::ZStream::write(const void * buf, size_t count) throw (GeneralExce if (w <= 0) return wroteTotal; } - wroteTotal += compressed; - count -= compressed; + size_t didRead = count - m_zout.avail_in; + wroteTotal += didRead; + count -= didRead; } return wroteTotal; } -- cgit v1.2.3