Merge pull request #4798 from dhalbert/hid_devices-gc

gc all pointers in hid_devices properly
This commit is contained in:
Scott Shawcroft 2021-05-25 14:13:19 -07:00 committed by GitHub
commit 7190b3ee6a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -259,9 +259,14 @@ void usb_hid_save_report_descriptor(uint8_t *report_descriptor_space, size_t rep
void usb_hid_gc_collect(void) { void usb_hid_gc_collect(void) {
gc_collect_ptr(hid_devices_tuple); gc_collect_ptr(hid_devices_tuple);
// Mark any heap pointers in the static device list as in use. // Mark possible heap pointers in the static device list as in use.
for (mp_int_t i = 0; i < num_hid_devices; i++) { for (mp_int_t i = 0; i < num_hid_devices; i++) {
gc_collect_ptr(&hid_devices[i]); // Cast away the const for .report_descriptor. It could be in flash or on the heap.
// Constant report descriptors must be const so that they are used directly from flash
// and not copied into RAM.
gc_collect_ptr((void *)hid_devices[i].report_descriptor);
gc_collect_ptr(hid_devices[i].in_report_buffer);
gc_collect_ptr(hid_devices[i].out_report_buffer);
} }
} }