diff --git a/panda/src/downloader/extractor.cxx b/panda/src/downloader/extractor.cxx index 93ed0bc169..b3abec5878 100644 --- a/panda/src/downloader/extractor.cxx +++ b/panda/src/downloader/extractor.cxx @@ -158,13 +158,13 @@ step() { } _subfile_index = _requests[_request_index]; - Filename subfile_filename(_extract_dir, - _multifile.get_subfile_name(_subfile_index)); - subfile_filename.set_binary(); - subfile_filename.make_dir(); - if (!subfile_filename.open_write(_write)) { + _subfile_filename = Filename(_extract_dir, + _multifile.get_subfile_name(_subfile_index)); + _subfile_filename.set_binary(); + _subfile_filename.make_dir(); + if (!_subfile_filename.open_write(_write)) { downloader_cat.error() - << "Unable to write to " << subfile_filename << ".\n"; + << "Unable to write to " << _subfile_filename << ".\n"; reset(); return EU_error_abort; } @@ -202,6 +202,12 @@ step() { } _write.put(byte); } + if (!_write) { + downloader_cat.error() + << "Error writing to " << _subfile_filename << ".\n"; + reset(); + return EU_error_abort; + } _subfile_pos += max_bytes; } diff --git a/panda/src/downloader/extractor.h b/panda/src/downloader/extractor.h index 38b1e9e762..655ce9a1ec 100644 --- a/panda/src/downloader/extractor.h +++ b/panda/src/downloader/extractor.h @@ -73,6 +73,7 @@ private: size_t _subfile_length; istream *_read; ofstream _write; + Filename _subfile_filename; }; #include "extractor.I"