diff --git a/panda/src/downloader/extractor.cxx b/panda/src/downloader/extractor.cxx index fe011e3e1d..f6a86017c6 100644 --- a/panda/src/downloader/extractor.cxx +++ b/panda/src/downloader/extractor.cxx @@ -84,6 +84,7 @@ initiate(Filename &source_file, const Filename &rel_path) { _total_bytes_read = 0; _read_all_input = false; _handled_all_input = false; + _mfile.reset(); return ES_success; } @@ -111,7 +112,6 @@ run(void) { if (_mfile.write(start, size, _rel_path) == true) { _read_stream.close(); _source_file.unlink(); - _mfile.reset(); return ES_success; } return ES_ok; diff --git a/panda/src/express/multifile.cxx b/panda/src/express/multifile.cxx index 81c67a9d38..07ae31d4b9 100644 --- a/panda/src/express/multifile.cxx +++ b/panda/src/express/multifile.cxx @@ -47,6 +47,7 @@ Multifile::Memfile:: ~Memfile(void) { if (_buffer != (char *)0L) delete _buffer; + _buffer = (char *)0L; delete _header_length_buf; } @@ -61,12 +62,12 @@ reset(void) { _header_parsed = false; _header_length = 0; _buffer_length = 0; - if (_buffer != (char *)0L) - delete _buffer; + //if (_buffer != (char *)0L) + // delete _buffer; _buffer = (char *)0L; _file_open = false; _bytes_written = 0; - _datagram.clear(); + //_datagram.clear(); } //////////////////////////////////////////////////////////////////// @@ -583,13 +584,16 @@ write(char *&start, int &size, const Filename &rel_path) { if (parse_header(start, size) == false) return false; - if (_current_mfile == (Memfile *)0L) - _current_mfile = new Memfile; + //if (_current_mfile == (Memfile *)0L) + // _current_mfile = new Memfile; while (_num_mfiles > 0) { + if (_current_mfile == NULL) + _current_mfile = new Memfile; if (_current_mfile->write(start, size, rel_path) == true) { _num_mfiles--; - _current_mfile->reset(); + delete _current_mfile; + // _current_mfile->reset(); } else return false; }