Fix 64-bit UB in BinaryenLiteral #3136
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.
Changes the storage type of type ids in
BinaryenLiteralfromint32_ttouintptr_t, matchingLiteral. The maximum storage size of type ids changed with the introduction of tuples, with their type id being the memory address of the canonicalized type vector.Interestingly, the related check
binaryen/src/binaryen-c.cpp
Lines 48 to 49 in bced89d
did not catch this due to implicit struct alignment, and other tests did not notice because type ids typically do not grow to values larger than 32 bits.