diff --git a/LUFA/Drivers/USB/Class/Host/HIDParser.c b/LUFA/Drivers/USB/Class/Host/HIDParser.c index 3fbad65084..241e17a052 100644 --- a/LUFA/Drivers/USB/Class/Host/HIDParser.c +++ b/LUFA/Drivers/USB/Class/Host/HIDParser.c @@ -46,8 +46,13 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID #endif HID_CollectionPath_t* CurrCollectionPath = NULL; - memset(ParserData, 0x00, sizeof(HID_ReportInfo_t)); - memset(StateTable, 0x00, sizeof(StateTable)); + ParserData->TotalReportItems = 0; + ParserData->UsingMultipleReports = false; + + for (uint8_t CurrCollection = 0; CurrCollection < HID_MAX_COLLECTIONS; CurrCollection++) + ParserData->CollectionPaths[CurrCollection].Parent = NULL; + + memset(&StateTable[0], 0x00, sizeof(HID_StateTable_t)); while (ReportSize) { diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index d62a31cc81..d42ad45e4d 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -31,6 +31,7 @@ * - Altered the SCSI commands in the LowLevel Mass Storage Host to save on FLASH space by reducing function calls * - Changed the parameters and behaviour of the USB_GetDeviceConfigDescriptor() function so that it now performs size checks * and data validations internally, to simplify user code + * - Changed HIDParser to only zero out important values in the Parsed HID Report Item Information structure to save cycles * * Fixed: * - Fixed possible lockup in the CDC device class driver, when the host sends data that is a multiple of the