Skip to content

Conversation

@tdrwenski
Copy link
Contributor

@tdrwenski tdrwenski commented Aug 23, 2024

Description of Changes

Should fix #1199.

When a double variable has multiple filters like Deflate, Shuffle, and Checksum, the Checksum was throwing an "invalid checksum" error on reading. This was because the Shuffle algorithm had a condition that it wasn't applied unless the chunk of data had a size that was a multiple of the element size. This condition was false for the case of 8 byte doubles with a checksum, which is represented as 4 bytes at the end of the chunk.

This PR allows the Shuffle encoding and decoding to apply to chunks of any size, and ensures the leftover bytes that aren't affected by the shuffle remain the same. This is in line with the netcdf-c library behavior.

Tara Drwenski added 2 commits August 22, 2024 16:41
…lement size (e.g. when you have 8 byte doubles and a 4 byte checksum) and make sure the checksum remains
@tdrwenski tdrwenski marked this pull request as ready for review August 23, 2024 15:09
@tdrwenski tdrwenski requested review from ethanrd and oxelson August 23, 2024 15:09
@oxelson oxelson merged commit 42186c7 into Unidata:maint-5.x Aug 23, 2024
@tdrwenski tdrwenski deleted the fix-checksum-error branch August 23, 2024 15:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[5.5.4-SNAPSHOT]: Checksum32 throwing checksum exception accessing var in H5 file

2 participants