diff --git a/SPD-classes/src/main/java/com/watabou/utils/FileUtils.java b/SPD-classes/src/main/java/com/watabou/utils/FileUtils.java index 9f4df1d1c..a835d721d 100644 --- a/SPD-classes/src/main/java/com/watabou/utils/FileUtils.java +++ b/SPD-classes/src/main/java/com/watabou/utils/FileUtils.java @@ -176,6 +176,9 @@ public class FileUtils { public static Bundle bundleFromFile( String fileName ) throws IOException{ try { FileHandle file = getFileHandle( fileName ); + if (!file.exists() || file.isDirectory() || file.length() == 0) { + throw new IOException("file does not exist!"); + } return bundleFromStream(file.read()); } catch (GdxRuntimeException e){ //game classes expect an IO exception, so wrap the GDX exception in that diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java index 2c94bf5fd..907a9992b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java @@ -308,7 +308,7 @@ public class InterlevelScene extends PixelScene { else if (error.getMessage() != null && error.getMessage().equals("old save")) errorMsg = Messages.get(this, "io_error"); - else throw new RuntimeException("fatal error occured while moving between floors. " + + else throw new RuntimeException("fatal error occurred while moving between floors. " + "Seed:" + Dungeon.seed + " depth:" + Dungeon.depth, error); add( new WndError( errorMsg ) { @@ -326,11 +326,13 @@ public class InterlevelScene extends PixelScene { s += "\n"; s += t.toString(); } - ShatteredPixelDungeon.reportException( - new RuntimeException("waited more than 10 seconds on levelgen. " + - "Seed:" + Dungeon.seed + " depth:" + Dungeon.depth + " trace:" + - s) - ); + //we care about reporting game logic exceptions, not slow IO + if (!s.contains("FileUtils.bundleToFile")){ + ShatteredPixelDungeon.reportException( + new RuntimeException("waited more than 10 seconds on levelgen. " + + "Seed:" + Dungeon.seed + " depth:" + Dungeon.depth + " trace:" + + s)); + } } break; }