Skip to content

Commit

Permalink
fix uncompress bug (baidu#234)
Browse files Browse the repository at this point in the history
  • Loading branch information
qinzuoyan committed Sep 12, 2018
1 parent 9444a07 commit 32e7965
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
12 changes: 7 additions & 5 deletions src/sofa/pbrpc/block_wrappers.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ const size_t BLOCKSIZE = 64 * 1024;

BlockCompressionInputStream::BlockCompressionInputStream(
ZeroCopyInputStream* sub_stream)
: _output_buffer(NULL), _output_buffer_size(0), _sub_stream(NULL), _backed_up_bytes(0),
_byte_count(0) {
: _output_buffer(NULL), _output_buffer_size(0), _output_buffer_capacity(0),
_sub_stream(NULL), _backed_up_bytes(0), _byte_count(0) {
_raw_stream = sub_stream;
_sub_stream = new CodedInputStream(_raw_stream);
_sub_stream->SetTotalBytesLimit(1 << 30, 1 << 30);
Expand Down Expand Up @@ -168,11 +168,12 @@ void SnappyInputStream::RawUncompress(char* input_buffer, uint32_t compressed_si
input_buffer, compressed_size, &uncompressed_size);
SCHECK(success);

if (uncompressed_size > _output_buffer_size) {
if (uncompressed_size > _output_buffer_capacity) {
delete[] _output_buffer;
_output_buffer_size = uncompressed_size;
_output_buffer = new char[_output_buffer_size];
_output_buffer = new char[uncompressed_size];
_output_buffer_capacity = uncompressed_size;
}
_output_buffer_size = uncompressed_size;
success = ::snappy::RawUncompress(input_buffer, compressed_size,
_output_buffer);
SCHECK(success);
Expand Down Expand Up @@ -201,6 +202,7 @@ uint32_t SnappyOutputStream::RawCompress(char* input_buffer, size_t input_size,
void LZ4InputStream::RawUncompress(char* input_buffer, uint32_t compressed_size) {
if (!_output_buffer) {
_output_buffer = new char[BLOCKSIZE];
_output_buffer_capacity = BLOCKSIZE;
}
_output_buffer_size = LZ4_uncompress_unknownOutputSize(input_buffer,
_output_buffer, compressed_size, BLOCKSIZE);
Expand Down
1 change: 1 addition & 0 deletions src/sofa/pbrpc/block_wrappers.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class BlockCompressionInputStream : public AbstractCompressedInputStream {

char* _output_buffer;
size_t _output_buffer_size;
size_t _output_buffer_capacity;

private:

Expand Down

0 comments on commit 32e7965

Please sign in to comment.