Move calling BZ2_bzDecompressEnd() to destructor.
Not calling it could lead to memory leaks.
Test: fail a REPLACE_BZ operation repeatedly
Change-Id: I898b5c71f8963a70647ae08ae81466e22b98cbfb
diff --git a/payload_consumer/bzip_extent_writer.cc b/payload_consumer/bzip_extent_writer.cc
index 39d9d67..7828589 100644
--- a/payload_consumer/bzip_extent_writer.cc
+++ b/payload_consumer/bzip_extent_writer.cc
@@ -24,6 +24,10 @@
const brillo::Blob::size_type kOutputBufferLength = 16 * 1024;
}
+BzipExtentWriter::~BzipExtentWriter() {
+ TEST_AND_RETURN(BZ2_bzDecompressEnd(&stream_) == BZ_OK);
+}
+
bool BzipExtentWriter::Init(FileDescriptorPtr fd,
const RepeatedPtrField<Extent>& extents,
uint32_t block_size) {
@@ -84,7 +88,6 @@
bool BzipExtentWriter::EndImpl() {
TEST_AND_RETURN_FALSE(input_buffer_.empty());
- TEST_AND_RETURN_FALSE(BZ2_bzDecompressEnd(&stream_) == BZ_OK);
return next_->End();
}
diff --git a/payload_consumer/bzip_extent_writer.h b/payload_consumer/bzip_extent_writer.h
index 86b346a..710727f 100644
--- a/payload_consumer/bzip_extent_writer.h
+++ b/payload_consumer/bzip_extent_writer.h
@@ -38,7 +38,7 @@
: next_(std::move(next)) {
memset(&stream_, 0, sizeof(stream_));
}
- ~BzipExtentWriter() override = default;
+ ~BzipExtentWriter() override;
bool Init(FileDescriptorPtr fd,
const google::protobuf::RepeatedPtrField<Extent>& extents,