diff --git a/Kernel/Bus/USB/USBConfiguration.cpp b/Kernel/Bus/USB/USBConfiguration.cpp index a1c7099b04..89b335ae72 100644 --- a/Kernel/Bus/USB/USBConfiguration.cpp +++ b/Kernel/Bus/USB/USBConfiguration.cpp @@ -29,6 +29,7 @@ ErrorOr USBConfiguration::enumerate_interfaces() u8* interface_descriptors_base = descriptor_hierarchy_buffer.data() + sizeof(USBConfigurationDescriptor); USBInterfaceDescriptor* interface_descriptor = reinterpret_cast(interface_descriptors_base); Vector endpoint_descriptors; + TRY(m_interfaces.try_ensure_capacity(m_descriptor.number_of_interfaces)); for (auto interface = 0u; interface < m_descriptor.number_of_interfaces; interface++) { endpoint_descriptors.ensure_capacity(interface_descriptor->number_of_endpoints); @@ -64,11 +65,11 @@ ErrorOr USBConfiguration::enumerate_interfaces() dbgln("Endpoint Poll Interval (in frames): {}", endpoint_descriptor.poll_interval_in_frames); } - endpoint_descriptors.append(endpoint_descriptor); + endpoint_descriptors.unchecked_append(endpoint_descriptor); } - USBInterface device_interface(*this, *interface_descriptor, endpoint_descriptors); - m_interfaces.append(device_interface); + USBInterface device_interface(*this, *interface_descriptor, move(endpoint_descriptors)); + m_interfaces.unchecked_append(move(device_interface)); interface_descriptor += interface_descriptor->number_of_endpoints * sizeof(USBEndpointDescriptor); } diff --git a/Kernel/Bus/USB/USBInterface.h b/Kernel/Bus/USB/USBInterface.h index cb1f542850..75992ff76c 100644 --- a/Kernel/Bus/USB/USBInterface.h +++ b/Kernel/Bus/USB/USBInterface.h @@ -16,10 +16,10 @@ class USBConfiguration; class USBInterface final { public: USBInterface() = delete; - USBInterface(USBConfiguration const& configuration, USBInterfaceDescriptor const descriptor, Vector const& endpoint_descriptors) + USBInterface(USBConfiguration const& configuration, USBInterfaceDescriptor const descriptor, Vector endpoint_descriptors) : m_configuration(configuration) , m_descriptor(descriptor) - , m_endpoint_descriptors(endpoint_descriptors) + , m_endpoint_descriptors(move(endpoint_descriptors)) { m_endpoint_descriptors.ensure_capacity(descriptor.number_of_endpoints); }