From f0db8981727ceb9637f8cb1dd80451ccd59c61d2 Mon Sep 17 00:00:00 2001 From: Mike Goslin Date: Fri, 15 Dec 2000 01:13:25 +0000 Subject: [PATCH] *** empty log message *** --- panda/src/downloader/decompressor.cxx | 10 ++++++++-- panda/src/downloader/decompressor.h | 2 +- panda/src/downloader/zcompressor.cxx | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/panda/src/downloader/decompressor.cxx b/panda/src/downloader/decompressor.cxx index 74ff042658..1770b50d87 100644 --- a/panda/src/downloader/decompressor.cxx +++ b/panda/src/downloader/decompressor.cxx @@ -53,6 +53,7 @@ init(PT(Buffer) buffer) { _temp_file_name = temp_name; _temp_file_name.set_binary(); delete temp_name; + _decompressor = new ZDecompressor(); } //////////////////////////////////////////////////////////////////// @@ -139,6 +140,9 @@ initiate(Filename &source_file, Filename &dest_file) { //////////////////////////////////////////////////////////////////// int Decompressor:: run(void) { + if (_decompressor == NULL) { + _decompressor = new ZDecompressor(); + } // See if there is anything left in the source file if (_read_all_input == false) { @@ -160,16 +164,18 @@ run(void) { nassertr(avail_out > 0 && avail_in > 0, false); while (avail_in > 0) { - int ret = _decompressor.decompress_to_stream(next_in, avail_in, + int ret = _decompressor->decompress_to_stream(next_in, avail_in, next_out, avail_out, dest_buffer, dest_buffer_length, _write_stream); if (ret == ZCompressorBase::S_error) return DS_error_zlib; - if ((int)_decompressor.get_total_in() == _source_file_length && + if ((int)_decompressor->get_total_in() == _source_file_length && avail_out == dest_buffer_length) _read_stream.close(); _write_stream.close(); _source_file.unlink(); + delete _decompressor; + _decompressor = NULL; return DS_success; } diff --git a/panda/src/downloader/decompressor.h b/panda/src/downloader/decompressor.h index 4fbb94b92c..eb72db34c5 100644 --- a/panda/src/downloader/decompressor.h +++ b/panda/src/downloader/decompressor.h @@ -54,7 +54,7 @@ private: bool _read_all_input; bool _handled_all_input; int _source_buffer_length; - ZDecompressor _decompressor; + ZDecompressor *_decompressor; }; #endif diff --git a/panda/src/downloader/zcompressor.cxx b/panda/src/downloader/zcompressor.cxx index 06552495d2..27ec93d9b4 100644 --- a/panda/src/downloader/zcompressor.cxx +++ b/panda/src/downloader/zcompressor.cxx @@ -41,6 +41,7 @@ ZCompressor(void) { ZCompressor:: ~ZCompressor(void) { handle_zerror(deflateEnd(_stream), _stream); + delete _stream; } ////////////////////////////////////////////////////////////////////