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.
A number of our tests needed to have updated results after this change, so I'm not sure if this is correct or not. The main issue with this change is that for some reason
smhasher
treats all results from MurmurHash3 as unsigned big-endian integers, whereas mm3's 64 bit hash function returns a pair of little-endian signed integers.smhasher
supported specifying unsigned seeds of any size, but the conversion to Clong
values would only take the first 32-bits worth of the number because it uses theI
format specifier, which has no overflow checking. There's a pull request to switch mmh3 to this same method that has been open for a long time, but I don't think it will be merged (hajimes/mmh3#6), so I manually try to do the same overflow handling by dividing by 2^32. I believe the results still differ because of the endianness difference in how the two libraries treat their results, but I couldn't quite figure out if any of our code needs to be updated for that (or to handlemmh3
returning signed ints).