Proper fix for gzfilebuf choking on some files.
When reading a new block of data, and the first byte of the new block is 0xff (_signed_ char -1), then this must be converted to _integer_ 0xff (+255), not -1 - which would indicate an error condition (EOF==-1). All valid _data_ character must be returned as non-negative, see streambuf::underflow spec, or compare with http://www.opensource.apple.com/source/zlib/zlib-12/zlib/contrib/iostream/zfstream.cpp or http://www.raspberryginger.com/jbailey/minix/html/zfstream_8cpp-source.html
This commit is contained in:
@@ -270,7 +270,7 @@ gzfilebuf::underflow()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return fillbuf() == EOF ? traits_type::eof() : int_type(*gptr());
|
return fillbuf() == EOF ? traits_type::eof() : (unsigned char) (*gptr());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user