On Thu, Apr 28, 2011 at 12:45 PM, Bo Jensen
On Thu, Apr 28, 2011 at 12:41 PM, Bo Jensen
wrote: On Thu, Apr 28, 2011 at 12:29 PM, Anders Knudby
wrote: On Thu, Apr 28, 2011 at 8:06 AM, Bo Jensen
wrote: In my quest of making gzip work for my application on windows, I found the following bug :
int main(int argc, char *argv[]) { std::ofstream strm("test.gz");
boost::iostreams::filtering_ostream sink;
/* Push gzip compressor */ sink.push(boost::iostreams::gzip_compressor());
/* Push file writer */ sink.push(strm);
#if 0 /* This does not work */ sink <<" OBJ N"<< std::endl; #else /* This works */ sink <<" OBJ N"<< std::endl; #endif }
The first string results in a invalid gzip file i.e invalid compressed data--length error. I am aware this might be a bug in zib lib. It works on without any problems on linux.
Does anyone use gzip on windows on a regular basis ? _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Hi Bo, I have recently tried getting boost/gzip to work on Windows (x86) and also run into some weird behaviour. It is chronicled in two recent posts, "Read/write with gzip" and "Writing large binary files with boost gzip". I can't say for sure that all my problems have been Windows issues, but others have successfully run some of my code on Linux when I couldn't get it to behave.
Anders
Yes, after some tweaks with flushing it works absolutely fine for me on linux. Windows on the other hand show some strange stuff like the one I mention. I tried to upgrade from zlib 1.2.4 to zlib 1.2.5, but can not make it compile with msvc-10. What version of zlib do you use ? Compiler ?
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
In regard to flushing issues, I can see from the zlib change list some new features were added in 1.2.4 :
Added flush options Z_BLOCK to deflate() and Z_TREES to inflate() for finer control
which was not possible when iostream library gzip stuff was implemented.
Sorry please disregard, I forgot to make the write binary i.e with : std::ofstream strm("test.gz", std::ios_base::out | std::ios_base::binary); then it works as expected.