From 32123a8cb9948e27ef3478cc449fda26bb2f5374 Mon Sep 17 00:00:00 2001 From: Federico Fissore Date: Fri, 6 Mar 2015 16:58:39 +0100 Subject: [PATCH] Fixed NPE in case of missing boardData --- .../packages/discoverers/SerialDiscovery.java | 41 +++++++++++-------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/arduino-core/src/cc/arduino/packages/discoverers/SerialDiscovery.java b/arduino-core/src/cc/arduino/packages/discoverers/SerialDiscovery.java index 2b91b2489..6c9cc8450 100644 --- a/arduino-core/src/cc/arduino/packages/discoverers/SerialDiscovery.java +++ b/arduino-core/src/cc/arduino/packages/discoverers/SerialDiscovery.java @@ -38,6 +38,7 @@ import processing.app.debug.TargetBoard; import processing.app.helpers.PreferencesMap; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -61,32 +62,38 @@ public class SerialDiscovery implements Discovery { for (String port : ports) { Map boardData = os.resolveDeviceAttachedTo(port, BaseNoGui.packages, devicesListOutput); - TargetBoard board = (TargetBoard) boardData.get("board"); BoardPort boardPort = new BoardPort(); boardPort.setAddress(port); boardPort.setProtocol("serial"); - PreferencesMap prefs = new PreferencesMap(); - prefs.put("vid", boardData.get("vid").toString()); - prefs.put("pid", boardData.get("pid").toString()); - String warningKey = "vid." + boardData.get("vid").toString() + ".warning"; - String warning = board.getPreferences().get(warningKey); - prefs.put("warning", warning); - - String boardName = board.getName(); String label = port; - if (boardName != null) { - if (warning != null) { - label += " (" + boardName + " - " + _(warning) + ")"; - } else { - label += " (" + boardName + ")"; + + PreferencesMap prefs = new PreferencesMap(); + + if (boardData != null) { + prefs.put("vid", boardData.get("vid").toString()); + prefs.put("pid", boardData.get("pid").toString()); + + TargetBoard board = (TargetBoard) boardData.get("board"); + if (board != null) { + String warningKey = "vid." + boardData.get("vid").toString() + ".warning"; + String warning = board.getPreferences().get(warningKey); + prefs.put("warning", warning); + + String boardName = board.getName(); + if (boardName != null) { + if (warning != null) { + label += " (" + boardName + " - " + _(warning) + ")"; + } else { + label += " (" + boardName + ")"; + } + } + boardPort.setBoardName(boardName); } } - boardPort.setBoardName(boardName); + boardPort.setLabel(label); - - boardPort.setPrefs(prefs); res.add(boardPort);