Skip to content

Commit 0416413

Browse files
fix(java): MemoryBuffer tests that equalTo works with size zero buffers (#2524)
Current implementation throws IAE for size zero buffers
1 parent ef6f68e commit 0416413

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

java/fory-core/src/main/java/org/apache/fory/memory/MemoryBuffer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2568,9 +2568,12 @@ public ForyStreamReader getStreamReader() {
25682568
* @param offset1 Offset of this buffer to start equaling
25692569
* @param offset2 Offset of buf2 to start equaling
25702570
* @param len Length of the equaled memory region
2571-
* @return true if equal, false otherwise
2571+
* @return true if buffers equal or len zero, false otherwise
25722572
*/
25732573
public boolean equalTo(MemoryBuffer buf2, int offset1, int offset2, int len) {
2574+
if (len == 0) {
2575+
return buf2 != null;
2576+
}
25742577
final long pos1 = address + offset1;
25752578
final long pos2 = buf2.address + offset2;
25762579
checkArgument(pos1 < addressLimit);

java/fory-core/src/test/java/org/apache/fory/memory/MemoryBufferTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,13 @@ public void testEqualTo() {
218218
Assert.assertFalse(buf1.equalTo(buf2, 0, 0, buf1.size()));
219219
}
220220

221+
@Test
222+
public void testEqualToZeroSize() {
223+
MemoryBuffer buf1 = MemoryUtils.buffer(0);
224+
MemoryBuffer buf2 = MemoryUtils.buffer(0);
225+
Assert.assertTrue(buf1.equalTo(buf2, 0, 0, buf1.size()));
226+
}
227+
221228
@Test
222229
public void testWritePrimitiveArrayWithSizeEmbedded() {
223230
MemoryBuffer buf = MemoryUtils.buffer(16);

java/fory-format/src/test/java/org/apache/fory/format/encoder/ImplementInterfaceTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,11 @@ public PoisonPill decode(final byte[] value) {
145145

146146
public interface OptionalType {
147147
Optional<String> f1();
148+
148149
OptionalInt f2();
150+
149151
OptionalLong f3();
152+
150153
OptionalDouble f4();
151154
}
152155

@@ -163,17 +166,17 @@ public Optional<String> f1() {
163166

164167
@Override
165168
public OptionalInt f2() {
166-
return f2;
169+
return f2;
167170
}
168171

169172
@Override
170173
public OptionalLong f3() {
171-
return f3;
174+
return f3;
172175
}
173176

174177
@Override
175178
public OptionalDouble f4() {
176-
return f4;
179+
return f4;
177180
}
178181
}
179182

0 commit comments

Comments
 (0)