Merge pull request #4798 from dhalbert/hid_devices-gc
gc all pointers in hid_devices properly
This commit is contained in:
commit
7190b3ee6a
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user