Repository navigation
Validate RGBMatrix arguments before reserving a display bus - #11490
Merged
tannewt merged 2 commits intoOct 2, 2026
Merged
Conversation
Reject invalid height, width, bit depth, tile count, and pin arguments before registering an RGBMatrix object in the static display-bus array. This avoids leaking a slot and leaving an incomplete object for reset handling when those checks raise an exception. Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 an RGBMatrix constructor receives an invalid height (for example, height=32 with five address pins), it currently reserves a display-bus slot before raising ValueError. A second attempt then fails with "Too many display busses", and reset handling can encounter the incomplete object.
Run the existing binding validations first, then allocate/register the object immediately before common-hal construction. This changes one file, with five added lines and two removed lines.
Fixes #9674.
Validation
AI-assisted: Codex audited the reported failure and previous review history, prepared the minimal change, and checked compiler output and actual MatrixPortal S3 serial results.
6fefe633d1and its pinned Protomatter dependency passed.ValueError, thenRuntimeError: Too many display bussesfor each of five cases: height mismatch, bit_depth=0, width=0, tile=0, and five RGB pins.ValueErrorin all five cases. A valid 64x64 constructor afterward succeeds, and an unrelated caught NameError also succeeds.git diff --checkpassed.Scope: this fixes errors from the existing binding argument checks. Exceptions arising later from common-hal pin preflight or memory allocation are outside this change.