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.
This PR fixes a bug when calculating rolling hashes (i.e. get hash of data so far, and then continue to append more data).
One use case for rolling hashes is uploading large files to Google Drive via API. The file is transferred in chunks, and the server response after each chunk contains the MD5 hash of all data received up to that point. It's useful to be able to verify that hash on client and then continue appending data to the hash when sending following chunks.
More background on the use case: nodejs/node#29903
Test case:
On current master, output is:
With this patch:
I assume this is not intended behavior.
The problem is caused by
.getState()
copying the._hash
array by reference into the state object. The values in that array are then mutated by further operations, so contents of state object get changed too. My solution is simply to clone the array.