Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix invalid checksum error #1380

Merged
merged 2 commits into from
Aug 23, 2024
Merged

Conversation

tdrwenski
Copy link
Member

@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.

…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
@oxelson oxelson merged commit 42186c7 into Unidata:maint-5.x Aug 23, 2024
8 checks passed
@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