diff --git a/spring-web-reactive/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java b/spring-web-reactive/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java index a8c304a150..3d41b007bf 100644 --- a/spring-web-reactive/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java @@ -139,10 +139,10 @@ public abstract class DataBufferUtils { @Override public void onNext(DataBuffer dataBuffer) { - long currentCount = - this.byteCount.addAndGet(dataBuffer.readableByteCount()); + int delta = dataBuffer.readableByteCount(); + long currentCount = this.byteCount.addAndGet(delta); if (currentCount > maxByteCount) { - int size = (int) (currentCount - maxByteCount + 1); + int size = (int) (maxByteCount - currentCount + delta); ByteBuffer byteBuffer = (ByteBuffer) dataBuffer.asByteBuffer().limit(size); DataBuffer partialBuffer =