Skip to content

Commit 21be069

Browse files
author
lrhodes
committed
Fix SerDe Issue 165
1 parent 99fd7fb commit 21be069

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

src/main/java/com/yahoo/sketches/quantiles/DoublesUnionImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ static DoublesUnionImpl heapifyInstance(final DoublesSketch sketch) {
7777
* @return a DoublesUnion object
7878
*/
7979
static DoublesUnionImpl heapifyInstance(final Memory srcMem) {
80-
final long n = srcMem.getLong(PreambleUtil.N_LONG);
80+
final int preLongs = srcMem.getByte(PreambleUtil.PREAMBLE_LONGS_BYTE) & 0xFF;
8181
final int k = srcMem.getShort(PreambleUtil.K_SHORT) & 0xFFFF;
82-
final HeapUpdateDoublesSketch sketch = (n == 0)
82+
final HeapUpdateDoublesSketch sketch = (preLongs == 1)
8383
? HeapUpdateDoublesSketch.newInstance(k)
8484
: HeapUpdateDoublesSketch.heapifyInstance(srcMem);
8585
final DoublesUnionImpl union = new DoublesUnionImpl(k);

src/test/java/com/yahoo/sketches/quantiles/DoublesUnionImplTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,15 @@ public void isSameResourceDirect() {
693693
Assert.assertFalse(union.isSameResource(mem2));
694694
}
695695

696+
@SuppressWarnings("unused")
697+
@Test
698+
public void checkSerDeIssue165() {
699+
DoublesUnion union = DoublesUnion.builder().build();
700+
byte[] byteArr = union.toByteArray();
701+
Memory mem = Memory.wrap(byteArr);
702+
DoublesUnion union2 = DoublesUnionBuilder.heapify(mem);
703+
}
704+
696705
@Test
697706
public void printlnTest() {
698707
println("PRINTING: " + this.getClass().getName());

0 commit comments

Comments
 (0)