Cannot assign values to 32-bit Bitmap #3227
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.
Actual result:
(
2**28
is used because the PewPew M4 I am testing on doesn’t have long ints enabled – the bit depth is rounded up to multiples of 8 so this results in a 32-bit bitmap.)Expected result: no error in either case,
b[0, 0] == 1
.This happens because the left-shift by 32 in the check in
bitmap_subscr()
anddisplayio_bitmap_obj_fill()
overflows a 32-bit integer, ending up in zero, which is always matched by the comparison. The attached commit fixes it by right-shifting on the other side of the equation instead (using an unsigned type to avoid sign extension).