@@ -651,7 +651,7 @@ size_t ra_portable_deserialize_size(const char *buf, const size_t maxbytes) {
651651 }
652652 bytestotal += size * 2 * sizeof (uint16_t );
653653 if (bytestotal > maxbytes ) return 0 ;
654- uint16_t * keyscards = ( uint16_t * ) buf ;
654+ const char * keyscards = buf ;
655655 buf += size * 2 * sizeof (uint16_t );
656656 if ((!hasrun ) || (size >= NO_OFFSET_THRESHOLD )) {
657657 // skipping the offsets
@@ -662,7 +662,7 @@ size_t ra_portable_deserialize_size(const char *buf, const size_t maxbytes) {
662662 // Reading the containers
663663 for (int32_t k = 0 ; k < size ; ++ k ) {
664664 uint16_t tmp ;
665- memcpy (& tmp , keyscards + 2 * k + 1 , sizeof (tmp ));
665+ memcpy (& tmp , keyscards + 4 * k + 2 , sizeof (tmp ));
666666 uint32_t thiscard = tmp + 1 ;
667667 bool isbitmap = (thiscard > DEFAULT_MAX_SIZE );
668668 bool isrun = false;
@@ -753,7 +753,7 @@ bool ra_portable_deserialize(roaring_array_t *answer, const char *buf,
753753 bitmapOfRunContainers = buf ;
754754 buf += s ;
755755 }
756- uint16_t * keyscards = ( uint16_t * ) buf ;
756+ const char * keyscards = buf ;
757757
758758 * readbytes += size * 2 * sizeof (uint16_t );
759759 if (* readbytes > maxbytes ) {
@@ -770,7 +770,7 @@ bool ra_portable_deserialize(roaring_array_t *answer, const char *buf,
770770
771771 for (int32_t k = 0 ; k < size ; ++ k ) {
772772 uint16_t tmp ;
773- memcpy (& tmp , keyscards + 2 * k , sizeof (tmp ));
773+ memcpy (& tmp , keyscards + 4 * k , sizeof (tmp ));
774774 answer -> keys [k ] = tmp ;
775775 }
776776 if ((!hasrun ) || (size >= NO_OFFSET_THRESHOLD )) {
@@ -788,7 +788,7 @@ bool ra_portable_deserialize(roaring_array_t *answer, const char *buf,
788788 // Reading the containers
789789 for (int32_t k = 0 ; k < size ; ++ k ) {
790790 uint16_t tmp ;
791- memcpy (& tmp , keyscards + 2 * k + 1 , sizeof (tmp ));
791+ memcpy (& tmp , keyscards + 4 * k + 2 , sizeof (tmp ));
792792 uint32_t thiscard = tmp + 1 ;
793793 bool isbitmap = (thiscard > DEFAULT_MAX_SIZE );
794794 bool isrun = false;
0 commit comments