Skip to content

Commit 106bda7

Browse files
committed
Fix NettyDataBuffer#lastIndexOf()
1 parent 8acceba commit 106bda7

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

spring-core/src/main/java/org/springframework/core/io/buffer/NettyDataBuffer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public int lastIndexOf(IntPredicate predicate, int fromIndex) {
9191
return -1;
9292
}
9393
fromIndex = Math.min(fromIndex, this.byteBuf.writerIndex() - 1);
94-
return this.byteBuf.forEachByteDesc(0, fromIndex, predicate.negate()::test);
94+
return this.byteBuf.forEachByteDesc(0, fromIndex + 1, predicate.negate()::test);
9595
}
9696

9797
@Override

spring-core/src/test/java/org/springframework/core/io/buffer/DataBufferTests.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,15 +210,24 @@ public void lastIndexOf() {
210210
DataBuffer buffer = createDataBuffer(3);
211211
buffer.write(new byte[]{'a', 'b', 'c'});
212212

213-
int result = buffer.lastIndexOf(b -> b == 'b', 3);
213+
int result = buffer.lastIndexOf(b -> b == 'b', 2);
214214
assertEquals(1, result);
215215

216+
result = buffer.lastIndexOf(b -> b == 'c', 2);
217+
assertEquals(2, result);
218+
216219
result = buffer.lastIndexOf(b -> b == 'b', Integer.MAX_VALUE);
217220
assertEquals(1, result);
218221

222+
result = buffer.lastIndexOf(b -> b == 'c', Integer.MAX_VALUE);
223+
assertEquals(2, result);
224+
219225
result = buffer.lastIndexOf(b -> b == 'b', Integer.MIN_VALUE);
220226
assertEquals(-1, result);
221227

228+
result = buffer.lastIndexOf(b -> b == 'c', Integer.MIN_VALUE);
229+
assertEquals(-1, result);
230+
222231
result = buffer.lastIndexOf(b -> b == 'z', 0);
223232
assertEquals(-1, result);
224233

0 commit comments

Comments
 (0)