From aaa60d7d6f8dc4940c93b6a71610aa8890686d27 Mon Sep 17 00:00:00 2001 From: Chris M Date: Wed, 24 Nov 2021 06:50:18 +0000 Subject: [PATCH] Changing cast type to avoid segfault resolving #1960 --- .../LogitechController/LogitechProtocolCommon.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Controllers/LogitechController/LogitechProtocolCommon.cpp b/Controllers/LogitechController/LogitechProtocolCommon.cpp index b2932c77..5011af27 100644 --- a/Controllers/LogitechController/LogitechProtocolCommon.cpp +++ b/Controllers/LogitechController/LogitechProtocolCommon.cpp @@ -515,9 +515,9 @@ void logitech_device::getRGBconfig() led_response = response.data[0]; get_count.feature_command = LOGITECH_CMD_RGB_EFFECTS_GET_INFO; - do + for(size_t i = 0; i < led_response; i++) { - get_count.data[0] = leds.size(); + get_count.data[0] = i; result = hid_write(dev_use2, get_count.buffer, get_count.size()); result = hid_read_timeout(dev_use2, response.buffer, response.size(), LOGITECH_PROTOCOL_TIMEOUT); LOG_DEBUG("[%s] FP8070 - LED %02i - %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", device_name.c_str(), get_count.data[0], @@ -555,7 +555,7 @@ void logitech_device::getRGBconfig() logitech_fx new_fx; new_fx.index = i; - new_fx.mode = *reinterpret_cast(fx_response.data[2] << 8 | fx_response.data[3]); + new_fx.mode = static_cast(fx_response.data[2] << 8 | fx_response.data[3]); new_fx.speed = fx_response.data[6] << 8 | fx_response.data[7]; new_led.fx.push_back(new_fx); @@ -563,7 +563,7 @@ void logitech_device::getRGBconfig() leds.emplace(response.data[0], new_led); } - } while ((result == 20) && (get_count.feature_index == response.feature_index) && (get_count.feature_command == response.feature_command) && (response.data[0] != 0x10) && (response.data[1] != 0x02)); + } } else if(feature_page == LOGITECH_HIDPP_PAGE_RGB_EFFECTS2) { @@ -616,7 +616,7 @@ void logitech_device::getRGBconfig() logitech_fx new_fx; new_fx.index = i; - new_fx.mode = *reinterpret_cast(fx_response.data[2] << 8 | fx_response.data[3]); + new_fx.mode = static_cast(fx_response.data[2] << 8 | fx_response.data[3]); new_fx.speed = fx_response.data[6] << 8 | fx_response.data[7]; new_led.fx.push_back(new_fx);