When we have a report with Long values like phone numbers( eg: 919012345678) , while retrieving the value from a snapshot, the value gets corrupted.
This is because of wrong calculation in LongArrayStore.
The offset used to store an array of Long values are signed integers, while the mask used to determine the offset type is that of an unsigned integer. The Long value gets treated as an Integer and overflows because of this wrong calculation.
The mask value should have been 0xffffffff80000000L instead of 0xffffffff00000000L. The patched java class and a corresponding test for the same.