Skip to content

Commit 6c6cfa5

Browse files
Fix crash when a USB device doesn't have a product name and HidSharp triggers an IOException (HidSharp.Exceptions.DeviceIOException). (#1650)
This happens for example with some Razer keyboards
1 parent ab6e5a9 commit 6c6cfa5

1 file changed

Lines changed: 25 additions & 17 deletions

File tree

LibreHardwareMonitorLib/Hardware/Controller/Razer/RazerGroup.cs

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// All Rights Reserved.
55

66
using System.Collections.Generic;
7+
using System.IO;
78
using System.Text;
89
using HidSharp;
910

@@ -21,26 +22,33 @@ public RazerGroup(ISettings settings)
2122

2223
foreach (HidDevice dev in DeviceList.Local.GetHidDevices(0x1532))
2324
{
24-
string productName = dev.GetProductName();
25-
26-
switch (dev.ProductID)
25+
try
2726
{
28-
case 0x0F3C: // Razer PWM PC fan controller
29-
if (dev.GetMaxFeatureReportLength() <= 0)
30-
break;
27+
string productName = dev.GetProductName();
3128

32-
var device = new RazerFanController(dev, settings);
33-
_report.AppendLine($"Device name: {productName}");
34-
_report.AppendLine($"Firmware version: {device.FirmwareVersion}");
35-
_report.AppendLine($"{device.Status}");
36-
_report.AppendLine();
37-
_hardware.Add(device);
38-
break;
29+
switch (dev.ProductID)
30+
{
31+
case 0x0F3C: // Razer PWM PC fan controller
32+
if (dev.GetMaxFeatureReportLength() <= 0)
33+
break;
34+
35+
var device = new RazerFanController(dev, settings);
36+
_report.AppendLine($"Device name: {productName}");
37+
_report.AppendLine($"Firmware version: {device.FirmwareVersion}");
38+
_report.AppendLine($"{device.Status}");
39+
_report.AppendLine();
40+
_hardware.Add(device);
41+
break;
3942

40-
default:
41-
_report.AppendLine($"Unknown Hardware PID: {dev.ProductID} Name: {productName}");
42-
_report.AppendLine();
43-
break;
43+
default:
44+
_report.AppendLine($"Unknown Hardware PID: {dev.ProductID} Name: {productName}");
45+
_report.AppendLine();
46+
break;
47+
}
48+
}
49+
catch (IOException e)
50+
{
51+
_report.AppendLine($"Failed to get information for USB device with id {dev.ProductID}: {e.Message} ");
4452
}
4553
}
4654

0 commit comments

Comments
 (0)