Fix large unsigned conversions in from_json #57
Merged
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.
I was noticing that large unsigned 64 ints were being converted from json into a negative python int. I think this is because the
from_json
is first checking if the json object is an integer, and only if that fails to check if it is an unsigned number. So I think the unsigned branch might never be hit.I flipped the order around, and added a test to check this. One comment about that test, I'm doing a full round trip of
uint64_t
to python int to json to python int, as I want to compare the two python ints without any explicit casting, as that would just cast away the issue.I actually had trouble debugging this because the default error output of pybind seems not to realise it should be trying to use 64 bit integers (long long) for the printing output and just shows
-1
instead. However, the python objects themselves are fine.