From 4068efbd1898058854f9ca5a967bc5ad5a851759 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 20 Feb 2012 18:47:25 +0000 Subject: Remove potentially unaligned uint32_t access in HIDParser.c, replace with standard C bit shifts. --- LUFA/Drivers/USB/Class/Common/HIDParser.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'LUFA/Drivers/USB/Class/Common') diff --git a/LUFA/Drivers/USB/Class/Common/HIDParser.c b/LUFA/Drivers/USB/Class/Common/HIDParser.c index d3e7d0226..4447e8a0b 100644 --- a/LUFA/Drivers/USB/Class/Common/HIDParser.c +++ b/LUFA/Drivers/USB/Class/Common/HIDParser.c @@ -61,17 +61,18 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, switch (HIDReportItem & HID_RI_DATA_SIZE_MASK) { case HID_RI_DATA_BITS_32: - ReportItemData = le32_to_cpu(*((uint32_t*)ReportData)); + ReportItemData = (((uint32_t)ReportData[3] << 24) | ((uint32_t)ReportData[2] << 16) | + ((uint16_t)ReportData[1] << 8) | ReportData[0]); ReportSize -= 4; ReportData += 4; break; case HID_RI_DATA_BITS_16: - ReportItemData = le16_to_cpu(*((uint16_t*)ReportData)); + ReportItemData = (((uint16_t)ReportData[1] << 8) | (ReportData[0])); ReportSize -= 2; ReportData += 2; break; case HID_RI_DATA_BITS_8: - ReportItemData = *((uint8_t*)ReportData); + ReportItemData = ReportData[0]; ReportSize -= 1; ReportData += 1; break; -- cgit v1.2.3