diff --git a/http/src/main/scala/org/apache/pekko/http/scaladsl/coding/DeflateCompressor.scala b/http/src/main/scala/org/apache/pekko/http/scaladsl/coding/DeflateCompressor.scala index 7e1adb749..9db56499d 100644 --- a/http/src/main/scala/org/apache/pekko/http/scaladsl/coding/DeflateCompressor.scala +++ b/http/src/main/scala/org/apache/pekko/http/scaladsl/coding/DeflateCompressor.scala @@ -50,7 +50,7 @@ private[coding] class DeflateCompressor private[coding] (compressionLevel: Int) protected def compressWithBuffer(input: ByteString, buffer: Array[Byte]): ByteString = { require(deflater.needsInput()) - deflater.setInput(input.toArrayUnsafe()) + deflater.setInput(input.asByteBuffer) drainDeflater(deflater, buffer) } protected def flushWithBuffer(buffer: Array[Byte]): ByteString = { @@ -149,7 +149,7 @@ private[coding] abstract class DeflateDecompressorBase(maxBytesPerChunk: Int = D override def canWorkWithPartialData = true override def parse(reader: ByteStringParser.ByteReader): ParseResult[ByteString] = { - inflater.setInput(reader.remainingData.toArray) + inflater.setInput(reader.remainingData.asByteBuffer) val buffer = new Array[Byte](maxBytesPerChunk) val read = inflater.inflate(buffer) diff --git a/http/src/main/scala/org/apache/pekko/http/scaladsl/coding/GzipCompressor.scala b/http/src/main/scala/org/apache/pekko/http/scaladsl/coding/GzipCompressor.scala index a10156556..da0491be8 100644 --- a/http/src/main/scala/org/apache/pekko/http/scaladsl/coding/GzipCompressor.scala +++ b/http/src/main/scala/org/apache/pekko/http/scaladsl/coding/GzipCompressor.scala @@ -41,7 +41,7 @@ private[coding] class GzipCompressor(compressionLevel: Int) extends DeflateCompr header() ++ super.finishWithBuffer(buffer) ++ trailer() private def updateCrc(input: ByteString): Unit = { - checkSum.update(input.toArrayUnsafe()) + checkSum.update(input.asByteBuffer) bytesRead += input.length } private def header(): ByteString = @@ -117,7 +117,7 @@ private[coding] class GzipDecompressor( } private def crc16(data: ByteString) = { val crc = new CRC32 - crc.update(data.toArrayUnsafe()) + crc.update(data.asByteBuffer) crc.getValue.toInt & 0xFFFF } }