From 9daab5ed9b8aec2f3d74b4018d4d32c9054b74bf Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 22 Jul 2020 09:50:46 +0200 Subject: [PATCH] Workaround for bug in PySerial: Don't crash if file doesn't exist Gonna report this upstream at the PySerial folks, if nobody else found this yet. Fixes Sentry issue CURA-11W. --- plugins/USBPrinting/USBPrinterOutputDeviceManager.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py index e4438e09db..1e9b46cb1c 100644 --- a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py +++ b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py @@ -114,10 +114,14 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin): :param only_list_usb: If true, only usb ports are listed """ base_list = [] - for port in serial.tools.list_ports.comports(): + try: + port_list = serial.tools.list_ports.comports() + except TypeError: # Bug in PySerial causes a TypeError if port gets disconnected while processing. + port_list = [] + for port in port_list: if not isinstance(port, tuple): port = (port.device, port.description, port.hwid) - if not port[2]: # HWID may be None if the port got disconnected while processing, the device is not USB or the system doesn't report the type. + if not port[2]: # HWID may be None if the device is not USB or the system doesn't report the type. continue if only_list_usb and not port[2].startswith("USB"): continue