You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
terminal: Correct logic error in supervisor_start_terminal
If `supervisor_start_terminal` is called twice in a row without
`supervisor_stop_terminal`, it would lose track of a supervisor
allocation.
This can occur when setting the rotation of a display, including the
way that a FramebufferDisplay sets rotation _AFTER_ initial construction,
first with a stack like
```
#0 supervisor_start_terminal
#1 in displayio_display_core_construct
#2 in common_hal_framebufferio_framebufferdisplay_construct
```
and then with a stack like
```
#0 supervisor_start_terminal
#1 in common_hal_framebufferio_framebufferdisplay_construct
#2 in framebufferio_framebufferdisplay_make_new
```
.. without an intervening stop_terminal call.
For reasons I didn't fully explore, this did not become a problem until
the ability to re-allocate a freed supervisor allocation was
implemented in adafruit#3482. Demonstrating the problem requires adafruit#3482 + adafruit#3497
+ this PR.
0 commit comments