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

leerho pushed a commit to branch 6.0.X_cherrypick_tgt
in repository https://gitbox.apache.org/repos/asf/datasketches-memory.git

commit 38fa425492c55aa446eaa9711acab54765b6fc20
Author: Lee Rhodes <[email protected]>
AuthorDate: Thu Jan 30 12:19:25 2025 -0800

    Merge pull request #253 from pawel-wiejacha/fix_set_position
    
    fixed operator precedence bug in setPosition() calls
---
 .../memory/internal/NativeWritableBufferImpl.java  | 24 +++++++++++-----------
 .../internal/NonNativeWritableBufferImpl.java      | 24 +++++++++++-----------
 .../internal/NativeWritableBufferImplTest.java     | 16 +++++++++++++++
 .../internal/NonNativeWritableBufferImplTest.java  | 15 ++++++++++++++
 4 files changed, 55 insertions(+), 24 deletions(-)

diff --git 
a/src/main/java/org/apache/datasketches/memory/internal/NativeWritableBufferImpl.java
 
b/src/main/java/org/apache/datasketches/memory/internal/NativeWritableBufferImpl.java
index 588f0d6..31b2f64 100644
--- 
a/src/main/java/org/apache/datasketches/memory/internal/NativeWritableBufferImpl.java
+++ 
b/src/main/java/org/apache/datasketches/memory/internal/NativeWritableBufferImpl.java
@@ -89,7 +89,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getCharArray(final char[] dstArray, final int dstOffsetChars, 
final int lengthChars) {
     final long pos = getPosition();
     getCharArr(seg, pos, dstArray, dstOffsetChars, lengthChars);
-    setPosition(pos + (lengthChars) << CHAR_SHIFT);
+    setPosition(pos + (lengthChars << CHAR_SHIFT));
   }
 
   @Override
@@ -108,7 +108,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getDoubleArray(final double[] dstArray, final int 
dstOffsetDoubles, final int lengthDoubles) {
     final long pos = getPosition();
     getDoubleArr(seg, pos, dstArray, dstOffsetDoubles, lengthDoubles);
-    setPosition(pos + (lengthDoubles) << DOUBLE_SHIFT);
+    setPosition(pos + (lengthDoubles << DOUBLE_SHIFT));
   }
 
   @Override
@@ -127,7 +127,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getFloatArray(final float[] dstArray, final int dstOffsetFloats, 
final int lengthFloats) {
     final long pos = getPosition();
     getFloatArr(seg, pos, dstArray, dstOffsetFloats, lengthFloats);
-    setPosition(pos + (lengthFloats) << FLOAT_SHIFT);
+    setPosition(pos + (lengthFloats << FLOAT_SHIFT));
   }
 
   @Override
@@ -146,7 +146,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getIntArray(final int[] dstArray, final int dstOffsetInts, final 
int lengthInts) {
     final long pos = getPosition();
     getIntArr(seg, pos, dstArray, dstOffsetInts, lengthInts);
-    setPosition(pos + (lengthInts) << INT_SHIFT);
+    setPosition(pos + (lengthInts << INT_SHIFT));
   }
 
   @Override
@@ -165,7 +165,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getLongArray(final long[] dstArray, final int dstOffsetLongs, 
final int lengthLongs) {
     final long pos = getPosition();
     getLongArr(seg, pos, dstArray, dstOffsetLongs, lengthLongs);
-    setPosition(pos + (lengthLongs) << LONG_SHIFT);
+    setPosition(pos + (lengthLongs << LONG_SHIFT));
   }
 
   @Override
@@ -184,7 +184,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getShortArray(final short[] dstArray, final int dstOffsetShorts, 
final int lengthShorts) {
     final long pos = getPosition();
     getShortArr(seg, pos, dstArray, dstOffsetShorts, lengthShorts);
-    setPosition(pos + (lengthShorts) << SHORT_SHIFT);
+    setPosition(pos + (lengthShorts << SHORT_SHIFT));
   }
 
   //PRIMITIVE putX() and putXArray()
@@ -204,7 +204,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putCharArray(final char[] srcArray, final int srcOffsetChars, 
final int lengthChars) {
     final long pos = getPosition();
     putCharArr(seg, pos, srcArray, srcOffsetChars, lengthChars);
-    setPosition(pos + (lengthChars) << CHAR_SHIFT);
+    setPosition(pos + (lengthChars << CHAR_SHIFT));
   }
 
   @Override
@@ -223,7 +223,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putDoubleArray(final double[] srcArray, final int 
srcOffsetDoubles, final int lengthDoubles) {
     final long pos = getPosition();
     putDoubleArr(seg, pos, srcArray, srcOffsetDoubles, lengthDoubles);
-    setPosition(pos + (lengthDoubles) << DOUBLE_SHIFT);
+    setPosition(pos + (lengthDoubles << DOUBLE_SHIFT));
   }
 
   @Override
@@ -242,7 +242,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putFloatArray(final float[] srcArray, final int srcOffsetFloats, 
final int lengthFloats) {
     final long pos = getPosition();
     putFloatArr(seg, pos, srcArray, srcOffsetFloats, lengthFloats);
-    setPosition(pos + (lengthFloats) << FLOAT_SHIFT);
+    setPosition(pos + (lengthFloats << FLOAT_SHIFT));
   }
 
   @Override
@@ -261,7 +261,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putIntArray(final int[] srcArray, final int srcOffsetInts, final 
int lengthInts) {
     final long pos = getPosition();
     putIntArr(seg, pos, srcArray, srcOffsetInts, lengthInts);
-    setPosition(pos + (lengthInts) << INT_SHIFT);
+    setPosition(pos + (lengthInts << INT_SHIFT));
   }
 
   @Override
@@ -280,7 +280,7 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putLongArray(final long[] srcArray, final int srcOffsetLongs, 
final int lengthLongs) {
     final long pos = getPosition();
     putLongArr(seg, pos, srcArray, srcOffsetLongs, lengthLongs);
-    setPosition(pos + (lengthLongs) << LONG_SHIFT);
+    setPosition(pos + (lengthLongs << LONG_SHIFT));
   }
 
   @Override
@@ -299,6 +299,6 @@ final class NativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putShortArray(final short[] srcArray, final int srcOffsetShorts, 
final int lengthShorts) {
     final long pos = getPosition();
     putShortArr(seg, pos, srcArray, srcOffsetShorts, lengthShorts);
-    setPosition(pos + (lengthShorts) << SHORT_SHIFT);
+    setPosition(pos + (lengthShorts << SHORT_SHIFT));
   }
 }
diff --git 
a/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImpl.java
 
b/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImpl.java
index 84cf349..29c5b1c 100644
--- 
a/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImpl.java
+++ 
b/src/main/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImpl.java
@@ -90,7 +90,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getCharArray(final char[] dstArray, final int dstOffsetChars, 
final int lengthChars) {
     final long pos = getPosition();
     getCharArr(seg, pos, dstArray, dstOffsetChars, lengthChars);
-    setPosition(pos + (lengthChars) << CHAR_SHIFT);
+    setPosition(pos + (lengthChars << CHAR_SHIFT));
   }
 
   @Override
@@ -109,7 +109,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getDoubleArray(final double[] dstArray, final int 
dstOffsetDoubles, final int lengthDoubles) {
     final long pos = getPosition();
     getDoubleArr(seg, pos, dstArray, dstOffsetDoubles, lengthDoubles);
-    setPosition(pos + (lengthDoubles) << DOUBLE_SHIFT);
+    setPosition(pos + (lengthDoubles << DOUBLE_SHIFT));
   }
 
   @Override
@@ -128,7 +128,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getFloatArray(final float[] dstArray, final int dstOffsetFloats, 
final int lengthFloats) {
     final long pos = getPosition();
     getFloatArr(seg, pos, dstArray, dstOffsetFloats, lengthFloats);
-    setPosition(pos + (lengthFloats) << FLOAT_SHIFT);
+    setPosition(pos + (lengthFloats << FLOAT_SHIFT));
   }
 
   @Override
@@ -147,7 +147,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getIntArray(final int[] dstArray, final int dstOffsetInts, final 
int lengthInts) {
     final long pos = getPosition();
     getIntArr(seg, pos, dstArray, dstOffsetInts, lengthInts);
-    setPosition(pos + (lengthInts) << INT_SHIFT);
+    setPosition(pos + (lengthInts << INT_SHIFT));
   }
 
   @Override
@@ -166,7 +166,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getLongArray(final long[] dstArray, final int dstOffsetLongs, 
final int lengthLongs) {
     final long pos = getPosition();
     getLongArr(seg, pos, dstArray, dstOffsetLongs, lengthLongs);
-    setPosition(pos + (lengthLongs) << LONG_SHIFT);
+    setPosition(pos + (lengthLongs << LONG_SHIFT));
   }
 
   @Override
@@ -185,7 +185,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void getShortArray(final short[] dstArray, final int dstOffsetShorts, 
final int lengthShorts) {
     final long pos = getPosition();
     getShortArr(seg, pos, dstArray, dstOffsetShorts, lengthShorts);
-    setPosition(pos + (lengthShorts) << SHORT_SHIFT);
+    setPosition(pos + (lengthShorts << SHORT_SHIFT));
   }
 
   //PRIMITIVE putX() and putXArray()
@@ -205,7 +205,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putCharArray(final char[] srcArray, final int srcOffsetChars, 
final int lengthChars) {
     final long pos = getPosition();
     putCharArr(seg, pos, srcArray, srcOffsetChars, lengthChars);
-    setPosition(pos + (lengthChars) << CHAR_SHIFT);
+    setPosition(pos + (lengthChars << CHAR_SHIFT));
   }
 
   @Override
@@ -224,7 +224,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putDoubleArray(final double[] srcArray, final int 
srcOffsetDoubles, final int lengthDoubles) {
     final long pos = getPosition();
     putDoubleArr(seg, pos, srcArray, srcOffsetDoubles, lengthDoubles);
-    setPosition(pos + (lengthDoubles) << DOUBLE_SHIFT);
+    setPosition(pos + (lengthDoubles << DOUBLE_SHIFT));
   }
 
   @Override
@@ -243,7 +243,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putFloatArray(final float[] srcArray, final int srcOffsetFloats, 
final int lengthFloats) {
     final long pos = getPosition();
     putFloatArr(seg, pos, srcArray, srcOffsetFloats, lengthFloats);
-    setPosition(pos + (lengthFloats) << FLOAT_SHIFT);
+    setPosition(pos + (lengthFloats << FLOAT_SHIFT));
   }
 
   @Override
@@ -262,7 +262,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putIntArray(final int[] srcArray, final int srcOffsetInts, final 
int lengthInts) {
     final long pos = getPosition();
     putIntArr(seg, pos, srcArray, srcOffsetInts, lengthInts);
-    setPosition(pos + (lengthInts) << INT_SHIFT);
+    setPosition(pos + (lengthInts << INT_SHIFT));
   }
 
   @Override
@@ -281,7 +281,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putLongArray(final long[] srcArray, final int srcOffsetLongs, 
final int lengthLongs) {
     final long pos = getPosition();
     putLongArr(seg, pos, srcArray, srcOffsetLongs, lengthLongs);
-    setPosition(pos + (lengthLongs) << LONG_SHIFT);
+    setPosition(pos + (lengthLongs << LONG_SHIFT));
   }
 
   @Override
@@ -300,7 +300,7 @@ final class NonNativeWritableBufferImpl extends 
WritableBufferImpl {
   public void putShortArray(final short[] srcArray, final int srcOffsetShorts, 
final int lengthShorts) {
     final long pos = getPosition();
     putShortArr(seg, pos, srcArray, srcOffsetShorts, lengthShorts);
-    setPosition(pos + (lengthShorts) << SHORT_SHIFT);
+    setPosition(pos + (lengthShorts << SHORT_SHIFT));
   }
 
 }
diff --git 
a/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java
 
b/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java
index 1a0a29f..a746ebc 100644
--- 
a/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java
+++ 
b/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java
@@ -468,6 +468,22 @@ public class NativeWritableBufferImplTest {
     assertEquals(buf.getShort(0), 256);
   }
 
+  @Test
+  public void checkPutIntArray() {
+    WritableMemory wmem = WritableMemory.allocate(12);
+    WritableBuffer wbuf = wmem.asWritableBuffer();
+
+    wbuf.putInt(1);
+    int[] array = new int[] { 2 };
+    wbuf.putIntArray(array, 0, 1);
+    wbuf.putInt(3);
+
+    Buffer buf = wmem.asWritableBuffer();
+    assertEquals(buf.getInt(), 1);
+    assertEquals(buf.getInt(), 2);
+    assertEquals(buf.getInt(), 3);
+  }
+
   @Test
   public void printlnTest() {
     println("PRINTING: "+this.getClass().getName());
diff --git 
a/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java
 
b/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java
index 155409b..1de0c4c 100644
--- 
a/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java
+++ 
b/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java
@@ -273,7 +273,22 @@ public class NonNativeWritableBufferImplTest {
     Memory mreg = mem.region(0, 8);
     assertEquals(mreg.getTypeByteOrder(), ByteOrder.BIG_ENDIAN);
     assertEquals(mreg.getChar(0), 1);
+  }
+
+  @Test
+  public void checkPutIntArray() {
+    WritableMemory wmem = WritableMemory.allocate(12, ByteOrder.BIG_ENDIAN);
+    WritableBuffer wbuf = wmem.asWritableBuffer(ByteOrder.BIG_ENDIAN);
+
+    wbuf.putInt(1);
+    int[] array = new int[] { 2 };
+    wbuf.putIntArray(array, 0, 1);
+    wbuf.putInt(3);
 
+    Buffer buf = wmem.asWritableBuffer();
+    assertEquals(buf.getInt(), 1);
+    assertEquals(buf.getInt(), 2);
+    assertEquals(buf.getInt(), 3);
   }
 
 }


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

Reply via email to