boost::iostreams(1.53.0) を使用して HTTP リクエスト本文を解凍し、後で処理しようとしています。しかし、次のコードを実行するとクラッシュします。
try {
using namespace boost::iostreams;
ifstream file(argv[1], std::ios_base::in | std::ios_base::binary);
boost::iostreams::filtering_istream in;
in.push(gzip_decompressor());
in.push(file);
std::stringstream strstream;
boost::iostreams::copy(in, strstream);
} catch (std::exception& e) {
cout << e.what() << endl;
}
クラッシュは で発生しgzip_decompressor()
、具体的にgzip_header() { reset(); }
はブーストの gzip.hpp で発生します (コール スタックを参照)。
boost::iostreams ライブラリを自分でコンパイルし、macports からのブーストも使用しようとしましたが、同じクラッシュが発生します。gzstream ライブラリも使用してみましたが、コンストラクター、より具体的には のコンストラクターでもクラッシュしigzstream
ます。
これは zlib 関連の問題だと思いがちです。具体的には言いませんが、Mountain Lion と xCode 4.6 を搭載した MacBook Pro を使用して、コードをビルドして実行しています。
以前にそのような問題に遭遇した人はいますか?