From ea894b1efe831bbf45c0b8bcf711a27cb8948acc Mon Sep 17 00:00:00 2001 From: Cristian Maglie <c.maglie@arduino.cc> Date: Mon, 4 Jan 2016 18:54:22 +0100 Subject: [PATCH] Fixed USB sendStringDescriptor --- cores/arduino/USB/USBCore.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cores/arduino/USB/USBCore.cpp b/cores/arduino/USB/USBCore.cpp index cd356d57..4277bc4e 100644 --- a/cores/arduino/USB/USBCore.cpp +++ b/cores/arduino/USB/USBCore.cpp @@ -90,18 +90,18 @@ bool USBDeviceClass::sendStringDescriptor(const uint8_t *string, uint8_t maxlen) if (maxlen < 2) return false; - uint16_t buff[maxlen/2]; - int l = 1; + uint8_t buffer[maxlen]; + buffer[0] = 0x03; + buffer[1] = strlen(string) * 2 + 2; - maxlen -= 2; - while (*string && maxlen>0) - { - buff[l++] = (uint8_t)(*string++); - maxlen -= 2; + uint8_t i; + for (i = 2; i < maxlen && *string; i++) { + buffer[i++] = *string++; + if (i == maxlen) break; + buffer[i] = 0; } - buff[0] = (3<<8) | (l*2); - return USBDevice.sendControl((uint8_t*)buff, l*2); + return USBDevice.sendControl(buffer, i); } bool _dry_run = false; -- GitLab