diff --git a/arduino-core/src/cc/arduino/packages/discoverers/serial/SerialBoardsLister.java b/arduino-core/src/cc/arduino/packages/discoverers/serial/SerialBoardsLister.java index 0cafed956..77d2922e7 100644 --- a/arduino-core/src/cc/arduino/packages/discoverers/serial/SerialBoardsLister.java +++ b/arduino-core/src/cc/arduino/packages/discoverers/serial/SerialBoardsLister.java @@ -56,13 +56,6 @@ public class SerialBoardsLister extends TimerTask { } public synchronized void retriggerDiscovery(boolean polled) { - while (BaseNoGui.packages == null) { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - // noop - } - } Platform platform = BaseNoGui.getPlatform(); if (platform == null) { return; @@ -103,6 +96,11 @@ public class SerialBoardsLister extends TimerTask { String[] parts = newPort.split("_"); String port = parts[0]; + if (parts.length != 3) { + // something went horribly wrong + continue; + } + Map boardData = platform.resolveDeviceByVendorIdProductId(port, BaseNoGui.packages); BoardPort boardPort = null; @@ -168,6 +166,9 @@ public class SerialBoardsLister extends TimerTask { @Override public void run() { + if (BaseNoGui.packages == null) { + return; + } retriggerDiscovery(true); } }