From d7b8339f22c008b6d310dba6340c286a769e8faa Mon Sep 17 00:00:00 2001 From: johni0702 Date: Fri, 17 Jul 2015 15:03:28 +0200 Subject: [PATCH] Fix infinite loop in exception handling --- .../java/eu/crushedpixel/replaymod/replay/ReplayHandler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java index 93502716..6c70c4ad 100755 --- a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java +++ b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java @@ -173,8 +173,9 @@ public class ReplayHandler { ReplayProcess.startReplayProcess(renderOptions); } catch (ReportedException e) { // We have to manually unwrap OOM errors as Minecraft doesn't handle them when they're wrapped + Throwable prevCause = null; Throwable cause = e; - while (cause != null) { + while (cause != null && cause != prevCause) { if (cause instanceof OutOfMemoryError) { // Nevertheless save the crash report in case we actually need it Minecraft minecraft = Minecraft.getMinecraft(); @@ -186,6 +187,7 @@ public class ReplayHandler { crashReport.saveToFile(file); throw (OutOfMemoryError) cause; } + prevCause = cause; cause = e.getCause(); } throw e;