From 106bda72947ab7b5cae6f2f4c66acdb66a934f3a Mon Sep 17 00:00:00 2001 From: Sebastien Deleuze Date: Tue, 9 Aug 2016 18:07:10 +0200 Subject: [PATCH] Fix NettyDataBuffer#lastIndexOf() --- .../core/io/buffer/NettyDataBuffer.java | 2 +- .../core/io/buffer/DataBufferTests.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/io/buffer/NettyDataBuffer.java b/spring-core/src/main/java/org/springframework/core/io/buffer/NettyDataBuffer.java index e8a6e8a5fb..366768473e 100644 --- a/spring-core/src/main/java/org/springframework/core/io/buffer/NettyDataBuffer.java +++ b/spring-core/src/main/java/org/springframework/core/io/buffer/NettyDataBuffer.java @@ -91,7 +91,7 @@ public class NettyDataBuffer implements PooledDataBuffer { return -1; } fromIndex = Math.min(fromIndex, this.byteBuf.writerIndex() - 1); - return this.byteBuf.forEachByteDesc(0, fromIndex, predicate.negate()::test); + return this.byteBuf.forEachByteDesc(0, fromIndex + 1, predicate.negate()::test); } @Override diff --git a/spring-core/src/test/java/org/springframework/core/io/buffer/DataBufferTests.java b/spring-core/src/test/java/org/springframework/core/io/buffer/DataBufferTests.java index df4a02d789..05c68e5d4e 100644 --- a/spring-core/src/test/java/org/springframework/core/io/buffer/DataBufferTests.java +++ b/spring-core/src/test/java/org/springframework/core/io/buffer/DataBufferTests.java @@ -210,15 +210,24 @@ public class DataBufferTests extends AbstractDataBufferAllocatingTestCase { DataBuffer buffer = createDataBuffer(3); buffer.write(new byte[]{'a', 'b', 'c'}); - int result = buffer.lastIndexOf(b -> b == 'b', 3); + int result = buffer.lastIndexOf(b -> b == 'b', 2); assertEquals(1, result); + result = buffer.lastIndexOf(b -> b == 'c', 2); + assertEquals(2, result); + result = buffer.lastIndexOf(b -> b == 'b', Integer.MAX_VALUE); assertEquals(1, result); + result = buffer.lastIndexOf(b -> b == 'c', Integer.MAX_VALUE); + assertEquals(2, result); + result = buffer.lastIndexOf(b -> b == 'b', Integer.MIN_VALUE); assertEquals(-1, result); + result = buffer.lastIndexOf(b -> b == 'c', Integer.MIN_VALUE); + assertEquals(-1, result); + result = buffer.lastIndexOf(b -> b == 'z', 0); assertEquals(-1, result);