Fix invalid encoding on level 9 with single value input #1115
+46
−10
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.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
With single value input and a full block write (>=64K) the indexing function would overflow a uint16 to a 0.
This would make it impossible to generate a valid huffman table for the literal size prediction.
In turn this would mean that the entire block would be output as literals - since the cost of each value would be 0 bits.
This would in turn mean that EOB could not be encoded for the bit writer - since there were no matches. This was previously being satisfied with "filling".
Fixes:
maxFlateBlockTokens- 32K for the literal estimate table.Fixes #1114