This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory.git


The following commit(s) were added to refs/heads/main by this push:
     new 04164131d fix(java): MemoryBuffer tests that equalTo works with size 
zero buffers (#2524)
04164131d is described below

commit 04164131d21c9e96f03cc83ccf29d4dcad9c3cd7
Author: Steven Schlansker <[email protected]>
AuthorDate: Mon Aug 25 10:55:49 2025 -0700

    fix(java): MemoryBuffer tests that equalTo works with size zero buffers 
(#2524)
    
    Current implementation throws IAE for size zero buffers
---
 .../src/main/java/org/apache/fory/memory/MemoryBuffer.java       | 5 ++++-
 .../src/test/java/org/apache/fory/memory/MemoryBufferTest.java   | 7 +++++++
 .../org/apache/fory/format/encoder/ImplementInterfaceTest.java   | 9 ++++++---
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git 
a/java/fory-core/src/main/java/org/apache/fory/memory/MemoryBuffer.java 
b/java/fory-core/src/main/java/org/apache/fory/memory/MemoryBuffer.java
index 97f1fa0d4..a444e48a9 100644
--- a/java/fory-core/src/main/java/org/apache/fory/memory/MemoryBuffer.java
+++ b/java/fory-core/src/main/java/org/apache/fory/memory/MemoryBuffer.java
@@ -2568,9 +2568,12 @@ public final class MemoryBuffer {
    * @param offset1 Offset of this buffer to start equaling
    * @param offset2 Offset of buf2 to start equaling
    * @param len Length of the equaled memory region
-   * @return true if equal, false otherwise
+   * @return true if buffers equal or len zero, false otherwise
    */
   public boolean equalTo(MemoryBuffer buf2, int offset1, int offset2, int len) 
{
+    if (len == 0) {
+      return buf2 != null;
+    }
     final long pos1 = address + offset1;
     final long pos2 = buf2.address + offset2;
     checkArgument(pos1 < addressLimit);
diff --git 
a/java/fory-core/src/test/java/org/apache/fory/memory/MemoryBufferTest.java 
b/java/fory-core/src/test/java/org/apache/fory/memory/MemoryBufferTest.java
index 2a57bb13c..cc3fa8c50 100644
--- a/java/fory-core/src/test/java/org/apache/fory/memory/MemoryBufferTest.java
+++ b/java/fory-core/src/test/java/org/apache/fory/memory/MemoryBufferTest.java
@@ -218,6 +218,13 @@ public class MemoryBufferTest {
     Assert.assertFalse(buf1.equalTo(buf2, 0, 0, buf1.size()));
   }
 
+  @Test
+  public void testEqualToZeroSize() {
+    MemoryBuffer buf1 = MemoryUtils.buffer(0);
+    MemoryBuffer buf2 = MemoryUtils.buffer(0);
+    Assert.assertTrue(buf1.equalTo(buf2, 0, 0, buf1.size()));
+  }
+
   @Test
   public void testWritePrimitiveArrayWithSizeEmbedded() {
     MemoryBuffer buf = MemoryUtils.buffer(16);
diff --git 
a/java/fory-format/src/test/java/org/apache/fory/format/encoder/ImplementInterfaceTest.java
 
b/java/fory-format/src/test/java/org/apache/fory/format/encoder/ImplementInterfaceTest.java
index b942d5dc0..724acb773 100644
--- 
a/java/fory-format/src/test/java/org/apache/fory/format/encoder/ImplementInterfaceTest.java
+++ 
b/java/fory-format/src/test/java/org/apache/fory/format/encoder/ImplementInterfaceTest.java
@@ -145,8 +145,11 @@ public class ImplementInterfaceTest {
 
   public interface OptionalType {
     Optional<String> f1();
+
     OptionalInt f2();
+
     OptionalLong f3();
+
     OptionalDouble f4();
   }
 
@@ -163,17 +166,17 @@ public class ImplementInterfaceTest {
 
     @Override
     public OptionalInt f2() {
-        return f2;
+      return f2;
     }
 
     @Override
     public OptionalLong f3() {
-        return f3;
+      return f3;
     }
 
     @Override
     public OptionalDouble f4() {
-        return f4;
+      return f4;
     }
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to