Changed uint
to use $imul
#1307
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.
When working in go1.20 I ran into crypto mathematics that failed because
uint
is using*
. The math overflowed the JS int causing it to switch to using an exponent and dropping the LSBs. Crypto needs those LSBs and expected the value to rollover. Using$imul
instead of*
fixes this problem. Sinceuint
is equivalent touint32
in GopherJS andint32
,uintptr
,uint32
, andint
were already using$imul
I figured thatuint
should probably be using it too.Even though this issue was discovered while working on go1.20, the fix isn't specifically related to go1.20. This should help anyone using master and also expecting
uint
to rollover the same asuint32
.