diff --git a/src/main/java/org/opensearch/index/codec/customcodecs/ZstdCompressionMode.java b/src/main/java/org/opensearch/index/codec/customcodecs/ZstdCompressionMode.java
index 05ff725..1314221 100644
--- a/src/main/java/org/opensearch/index/codec/customcodecs/ZstdCompressionMode.java
+++ b/src/main/java/org/opensearch/index/codec/customcodecs/ZstdCompressionMode.java
@@ -188,7 +188,6 @@ public void decompress(DataInput in, int originalLength, int offset, int length,
 
                     // Read blocks that intersect with the interval we need
                     while (offsetInBlock < offset + length) {
-                        bytes.bytes = ArrayUtil.grow(bytes.bytes, bytes.length + blockLength);
                         int l = Math.min(blockLength, originalLength - offsetInBlock);
                         doDecompress(in, dctx, bytes, l);
                         offsetInBlock += blockLength;
diff --git a/src/main/java/org/opensearch/index/codec/customcodecs/ZstdNoDictCompressionMode.java b/src/main/java/org/opensearch/index/codec/customcodecs/ZstdNoDictCompressionMode.java
index af4e92b..eabf4c7 100644
--- a/src/main/java/org/opensearch/index/codec/customcodecs/ZstdNoDictCompressionMode.java
+++ b/src/main/java/org/opensearch/index/codec/customcodecs/ZstdNoDictCompressionMode.java
@@ -148,7 +148,6 @@ public void decompress(DataInput in, int originalLength, int offset, int length,
 
             // Read blocks that intersect with the interval we need
             while (offsetInBlock < offset + length) {
-                bytes.bytes = ArrayUtil.grow(bytes.bytes, bytes.length + blockLength);
                 final int compressedLength = in.readVInt();
                 if (compressedLength == 0) {
                     return;
@@ -159,10 +158,7 @@ public void decompress(DataInput in, int originalLength, int offset, int length,
                 int l = Math.min(blockLength, originalLength - offsetInBlock);
                 bytes.bytes = ArrayUtil.grow(bytes.bytes, bytes.length + l);
 
-                byte[] output = new byte[l];
-
-                final int uncompressed = (int) Zstd.decompressByteArray(output, 0, l, compressed, 0, compressedLength);
-                System.arraycopy(output, 0, bytes.bytes, bytes.length, uncompressed);
+                final int uncompressed = (int) Zstd.decompressByteArray(bytes.bytes, bytes.length, l, compressed, 0, compressedLength);
 
                 bytes.length += uncompressed;
                 offsetInBlock += blockLength;