Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upAdd testcase for case where both input and output buffers are full. #68
Conversation
This comment has been minimized.
This comment has been minimized.
|
Thanks, will have to look into this. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
golddranks commentedJan 31, 2020
•
edited
This commit adds a testcase that fails because of an apparent bug in miniz_oxide. The bug happens when it just so happens that both input buffer becomes empty and output buffer becomes full during the same call to the
inflate::core::decompressfunction. In that case, I think that most users of the library expect to getHasMoreOutputstatus, urging them to read the output value before it gets overwritten by anotherdecompresscall.However, in some (but only in some) cases,
NeedsMoreInputstatus is returned. If the user naively pattern-matches to the status and calls again with more input, data loss occurs. Therefore, when the output buffer is full,HasMoreOutputshould always be prioritized overNeedsMoreInput.I don't still know enough about the insides of this library to suggest a fix in the same PR. However, at least I was able to reduce the bug into a relatively simple case.