1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-03-15 12:29:26 +01:00

Permissions/IO errors can cause nullpointerexception

Fixes #1160
Merge remote-tracking branch 'arduino/ide-1.5.x-issue1160' into ide-1.5.x
This commit is contained in:
Cristian Maglie 2012-12-27 11:56:37 +01:00
commit a05c73bf8f
2 changed files with 22 additions and 8 deletions

View File

@ -1197,10 +1197,15 @@ public class Base {
// Populate importToLibraryTable // Populate importToLibraryTable
importToLibraryTable = new HashMap<String, File>(); importToLibraryTable = new HashMap<String, File>();
for (File subfolder : libraries.values()) { for (File subfolder : libraries.values()) {
try {
String packages[] = headerListFromIncludePath(subfolder); String packages[] = headerListFromIncludePath(subfolder);
for (String pkg : packages) for (String pkg : packages) {
importToLibraryTable.put(pkg, subfolder); importToLibraryTable.put(pkg, subfolder);
} }
} catch (IOException e) {
showWarning(_("Error"), I18n.format("Unable to list header files in {0}", subfolder), e);
}
}
// Update editors status bar // Update editors status bar
for (Editor editor : editors) for (Editor editor : editors)
@ -1548,8 +1553,13 @@ public class Base {
Collections.sort(list, String.CASE_INSENSITIVE_ORDER); Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
ActionListener listener = new ActionListener() { ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent event) {
activeEditor.getSketch().importLibrary(e.getActionCommand()); String jarPath = event.getActionCommand();
try {
activeEditor.getSketch().importLibrary(jarPath);
} catch (IOException e) {
showWarning(_("Error"), I18n.format("Unable to list header files in {0}", jarPath), e);
}
} }
}; };
@ -1571,8 +1581,12 @@ public class Base {
* the header files in its sub-folders, as those should be included from * the header files in its sub-folders, as those should be included from
* within the header files at the top-level). * within the header files at the top-level).
*/ */
static public String[] headerListFromIncludePath(File path) { static public String[] headerListFromIncludePath(File path) throws IOException {
return path.list(new OnlyFilesWithExtension(".h")); String[] list = path.list(new OnlyFilesWithExtension(".h"));
if (list == null) {
throw new IOException();
}
return list;
} }
protected void loadHardware(File folder) { protected void loadHardware(File folder) {

View File

@ -1124,7 +1124,7 @@ public class Sketch {
* Add import statements to the current tab for all of packages inside * Add import statements to the current tab for all of packages inside
* the specified jar file. * the specified jar file.
*/ */
public void importLibrary(String jarPath) { public void importLibrary(String jarPath) throws IOException {
// make sure the user didn't hide the sketch folder // make sure the user didn't hide the sketch folder
ensureExistence(); ensureExistence();