Skip to content

Commit ec349f6

Browse files
committed
memcpy should only copy for length of compile time struct
1 parent 9b6219f commit ec349f6

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

shared-module/displayio/__init__.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,8 @@ void malloc_display_memory(void) {
203203
if (max_num_displays > CIRCUITPY_DISPLAY_LIMIT) {
204204
display_buses = (primary_display_bus_t *)port_malloc(sizeof(primary_display_bus_t) * max_num_displays, false);
205205
displays = (primary_display_t *)port_malloc(sizeof(primary_display_t) * max_num_displays, false);
206-
memcpy(display_buses, &display_busesx[0], sizeof(primary_display_bus_t) * max_num_displays);
207-
memcpy(displays, &displaysx[0], sizeof(primary_display_t) * max_num_displays);
206+
memcpy(display_buses, &display_busesx[0], sizeof(primary_display_bus_t) * CIRCUITPY_DISPLAY_LIMIT);
207+
memcpy(displays, &displaysx[0], sizeof(primary_display_t) * CIRCUITPY_DISPLAY_LIMIT);
208208
}
209209
#endif
210210
}

shared-module/displayio/__init__.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ typedef struct {
9999
};
100100
} primary_display_t;
101101

102-
extern primary_display_bus_t display_busesx[];
103-
extern primary_display_t displaysx[];
102+
extern primary_display_bus_t display_busesx[CIRCUITPY_DISPLAY_LIMIT];
103+
extern primary_display_t displaysx[CIRCUITPY_DISPLAY_LIMIT];
104104
extern primary_display_bus_t *display_buses;
105105
extern primary_display_t *displays;
106106

supervisor/shared/web_workflow/web_workflow.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1567,7 +1567,7 @@ static bool supervisor_filesystem_access_could_block(void) {
15671567
(void)common_hal_os_getenv_int("CIRCUITPY_DISPLAY_LIMIT", &max_num_displays);
15681568
#endif
15691569
// Check displays to see if it's on a fourwire (SPI) bus. If it is, blocking is possible
1570-
for (size_t i = 0; i < max_num_displays; i++) {
1570+
for (mp_int_t i = 0; i < max_num_displays; i++) {
15711571
if (display_buses[i].bus_base.type != &fourwire_fourwire_type) {
15721572
continue;
15731573
}

0 commit comments

Comments
 (0)