diff --git a/lz4diff/lz4diff.cc b/lz4diff/lz4diff.cc
index 3e4d3b4..25dce00 100644
--- a/lz4diff/lz4diff.cc
+++ b/lz4diff/lz4diff.cc
@@ -122,8 +122,7 @@
 static bool ConstructLz4diffPatch(Blob inner_patch,
                                   const Lz4diffHeader& header,
                                   Blob* output) {
-  Blob patch;
-  patch.resize(kLz4diffHeaderSize);
+  Blob patch(kLz4diffHeaderSize);
   std::memcpy(patch.data(), kLz4diffMagic.data(), kLz4diffMagic.size());
   *reinterpret_cast<uint32_t*>(patch.data() + kLz4diffMagic.size()) =
       htobe32(kLz4diffVersion);
@@ -182,16 +181,15 @@
              std::string_view dst,
              const CompressedFile& src_file_info,
              const CompressedFile& dst_file_info,
-             const bool zero_padding_enabled,
              Blob* output,
              InstallOperation::Type* op_type) noexcept {
   const auto& src_block_info = src_file_info.blocks;
   const auto& dst_block_info = dst_file_info.blocks;
 
-  auto decompressed_src =
-      TryDecompressBlob(src, src_block_info, zero_padding_enabled);
-  auto decompressed_dst =
-      TryDecompressBlob(dst, dst_block_info, zero_padding_enabled);
+  auto decompressed_src = TryDecompressBlob(
+      src, src_block_info, src_file_info.zero_padding_enabled);
+  auto decompressed_dst = TryDecompressBlob(
+      dst, dst_block_info, dst_file_info.zero_padding_enabled);
   if (decompressed_src.empty() || decompressed_dst.empty()) {
     LOG(ERROR) << "Failed to decompress input data";
     return false;
@@ -222,7 +220,7 @@
 
   auto recompressed_blob = TryCompressBlob(ToStringView(decompressed_dst),
                                            dst_block_info,
-                                           zero_padding_enabled,
+                                           dst_file_info.zero_padding_enabled,
                                            dst_file_info.algo);
   TEST_AND_RETURN_FALSE(recompressed_blob.size() > 0);
 
@@ -236,14 +234,12 @@
              const Blob& dst,
              const CompressedFile& src_file_info,
              const CompressedFile& dst_file_info,
-             const bool zero_padding_enabled,
              Blob* output,
              InstallOperation::Type* op_type) noexcept {
   return Lz4Diff(ToStringView(src),
                  ToStringView(dst),
                  src_file_info,
                  dst_file_info,
-                 zero_padding_enabled,
                  output,
                  op_type);
 }
