I modified the test program shipped in the boost::iostreams to
decompress a 1.5 GB file which expand to 6GB. The program exits after
writing 900KB of data without throwing exceptions.
It is reproduced below, I was told in the irc channel that this was a bug in alloc and will be probably fixed in
1.34.1.
-r
#include <fstream>
#include <iostream>
#include <boost/iostreams/filtering
_stream.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/bzip2.hpp>
using namespace std;
namespace bio = boost::iostreams;
int main ( int argc, char ** argv ) {
if (argc < 2) {
fprintf(stderr, "Usage: %s data_filename\n", argv[0]);
exit(0);
}
ifstream file(argv[1], ios_base::in|ios_base::binary );
if ( !file.good() ) {
fprintf(stderr, "Unable to open file%s\n", argv[1]);
exit(0);
} else {
try {
bio::filtering_stream < bio::input > in;
in.push( bio::bzip2_decompressor () );
in.push( file );
bio::copy ( in, cout );
} catch ( const std::exception& e ) {
std::cerr<<"\nCaught std::exception " << ": "<<
e.what() << std::endl;
}
}
}