1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-03-13 10:29:35 +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,9 +1197,14 @@ public class Base {
// Populate importToLibraryTable
importToLibraryTable = new HashMap<String, File>();
for (File subfolder : libraries.values()) {
String packages[] = headerListFromIncludePath(subfolder);
for (String pkg : packages)
importToLibraryTable.put(pkg, subfolder);
try {
String packages[] = headerListFromIncludePath(subfolder);
for (String pkg : packages) {
importToLibraryTable.put(pkg, subfolder);
}
} catch (IOException e) {
showWarning(_("Error"), I18n.format("Unable to list header files in {0}", subfolder), e);
}
}
// Update editors status bar
@ -1548,8 +1553,13 @@ public class Base {
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
activeEditor.getSketch().importLibrary(e.getActionCommand());
public void actionPerformed(ActionEvent event) {
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
* within the header files at the top-level).
*/
static public String[] headerListFromIncludePath(File path) {
return path.list(new OnlyFilesWithExtension(".h"));
static public String[] headerListFromIncludePath(File path) throws IOException {
String[] list = path.list(new OnlyFilesWithExtension(".h"));
if (list == null) {
throw new IOException();
}
return list;
}
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
* 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
ensureExistence();