Browse Source

*** empty log message ***

Mike Goslin 25 years ago
parent
commit
f0db898172

+ 8 - 2
panda/src/downloader/decompressor.cxx

@@ -53,6 +53,7 @@ init(PT(Buffer) buffer) {
   _temp_file_name = temp_name;
   _temp_file_name = temp_name;
   _temp_file_name.set_binary();
   _temp_file_name.set_binary();
   delete temp_name;
   delete temp_name;
+  _decompressor = new ZDecompressor();
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -139,6 +140,9 @@ initiate(Filename &source_file, Filename &dest_file) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 int Decompressor::
 int Decompressor::
 run(void) {
 run(void) {
+  if (_decompressor == NULL) {
+    _decompressor = new ZDecompressor();
+  }
 
 
   // See if there is anything left in the source file
   // See if there is anything left in the source file
   if (_read_all_input == false) {
   if (_read_all_input == false) {
@@ -160,16 +164,18 @@ run(void) {
   nassertr(avail_out > 0 && avail_in > 0, false);
   nassertr(avail_out > 0 && avail_in > 0, false);
 
 
   while (avail_in > 0) {
   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, 
 			next_out, avail_out, dest_buffer, 
 			dest_buffer_length, _write_stream);
 			dest_buffer_length, _write_stream);
     if (ret == ZCompressorBase::S_error)
     if (ret == ZCompressorBase::S_error)
       return DS_error_zlib;
       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)
 	  avail_out == dest_buffer_length)
       _read_stream.close();
       _read_stream.close();
       _write_stream.close();
       _write_stream.close();
       _source_file.unlink();
       _source_file.unlink();
+      delete _decompressor;
+      _decompressor = NULL;
       return DS_success;
       return DS_success;
   }
   }
 
 

+ 1 - 1
panda/src/downloader/decompressor.h

@@ -54,7 +54,7 @@ private:
   bool _read_all_input;
   bool _read_all_input;
   bool _handled_all_input;
   bool _handled_all_input;
   int _source_buffer_length;
   int _source_buffer_length;
-  ZDecompressor _decompressor;
+  ZDecompressor *_decompressor;
 };
 };
 
 
 #endif
 #endif

+ 1 - 0
panda/src/downloader/zcompressor.cxx

@@ -41,6 +41,7 @@ ZCompressor(void) {
 ZCompressor::
 ZCompressor::
 ~ZCompressor(void) {
 ~ZCompressor(void) {
   handle_zerror(deflateEnd(_stream), _stream);
   handle_zerror(deflateEnd(_stream), _stream);
+  delete _stream;
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////