diff options
| author | 2020-06-07 17:26:41 +0200 | |
|---|---|---|
| committer | 2020-06-07 17:26:41 +0200 | |
| commit | 50d4fc8430573757c5fe4f4a1d3b1c4871dbfb46 (patch) | |
| tree | d79202cc803018f04580f166a1a11e89e65786ad /enigma/src | |
| parent | Fix yet another navigateToToken crash (diff) | |
| download | enigma-fork-50d4fc8430573757c5fe4f4a1d3b1c4871dbfb46.tar.gz enigma-fork-50d4fc8430573757c5fe4f4a1d3b1c4871dbfb46.tar.xz enigma-fork-50d4fc8430573757c5fe4f4a1d3b1c4871dbfb46.zip | |
Add remap crash handler
Diffstat (limited to 'enigma/src')
4 files changed, 16 insertions, 4 deletions
diff --git a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java index a11b9dc..20f847a 100644 --- a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java +++ b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java | |||
| @@ -28,8 +28,13 @@ public final class ClassHandleError { | |||
| 28 | return new ClassHandleError(Type.DECOMPILE, cause); | 28 | return new ClassHandleError(Type.DECOMPILE, cause); |
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | public static ClassHandleError remap(Throwable cause) { | ||
| 32 | return new ClassHandleError(Type.REMAP, cause); | ||
| 33 | } | ||
| 34 | |||
| 31 | public enum Type { | 35 | public enum Type { |
| 32 | DECOMPILE, | 36 | DECOMPILE, |
| 37 | REMAP, | ||
| 33 | } | 38 | } |
| 34 | 39 | ||
| 35 | } \ No newline at end of file | 40 | } \ No newline at end of file |
diff --git a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java index 2d9b52d..f9e4eff 100644 --- a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java +++ b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java | |||
| @@ -11,6 +11,8 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; | |||
| 11 | 11 | ||
| 12 | import javax.annotation.Nullable; | 12 | import javax.annotation.Nullable; |
| 13 | 13 | ||
| 14 | import org.objectweb.asm.tree.ClassNode; | ||
| 15 | |||
| 14 | import cuchaz.enigma.Enigma; | 16 | import cuchaz.enigma.Enigma; |
| 15 | import cuchaz.enigma.EnigmaProject; | 17 | import cuchaz.enigma.EnigmaProject; |
| 16 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; | 18 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; |
| @@ -19,7 +21,6 @@ import cuchaz.enigma.events.ClassHandleListener.InvalidationType; | |||
| 19 | import cuchaz.enigma.source.*; | 21 | import cuchaz.enigma.source.*; |
| 20 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 22 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| 21 | import cuchaz.enigma.utils.Result; | 23 | import cuchaz.enigma.utils.Result; |
| 22 | import org.objectweb.asm.tree.ClassNode; | ||
| 23 | 24 | ||
| 24 | import static cuchaz.enigma.utils.Utils.withLock; | 25 | import static cuchaz.enigma.utils.Utils.withLock; |
| 25 | 26 | ||
| @@ -285,9 +286,13 @@ public final class ClassHandleProvider { | |||
| 285 | int v = mappedVersion.incrementAndGet(); | 286 | int v = mappedVersion.incrementAndGet(); |
| 286 | f.thenAcceptAsync(res -> { | 287 | f.thenAcceptAsync(res -> { |
| 287 | if (res == null || mappedVersion.get() != v) return; | 288 | if (res == null || mappedVersion.get() != v) return; |
| 288 | res = res.map(source -> { | 289 | res = res.andThen(source -> { |
| 289 | source.remapSource(p.project, p.project.getMapper().getDeobfuscator()); | 290 | try { |
| 290 | return source; | 291 | source.remapSource(p.project, p.project.getMapper().getDeobfuscator()); |
| 292 | return Result.ok(source); | ||
| 293 | } catch (Throwable e) { | ||
| 294 | return Result.err(ClassHandleError.remap(e)); | ||
| 295 | } | ||
| 291 | }); | 296 | }); |
| 292 | Entry.this.source = res; | 297 | Entry.this.source = res; |
| 293 | Entry.this.waitingSources.forEach(s -> s.complete(source)); | 298 | Entry.this.waitingSources.forEach(s -> s.complete(source)); |
diff --git a/enigma/src/main/resources/lang/de_de.json b/enigma/src/main/resources/lang/de_de.json index ef41da1..65685cf 100644 --- a/enigma/src/main/resources/lang/de_de.json +++ b/enigma/src/main/resources/lang/de_de.json | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | "editor.decompiling": "Dekompiliere...", | 12 | "editor.decompiling": "Dekompiliere...", |
| 13 | "editor.decompile_error": "Ein Fehler ist während des Dekompilierens aufgetreten.", | 13 | "editor.decompile_error": "Ein Fehler ist während des Dekompilierens aufgetreten.", |
| 14 | "editor.remap_error": "Ein Fehler ist während des Remappens aufgetreten.", | ||
| 14 | 15 | ||
| 15 | "validation.message.empty_field": "Dieses Feld muss ausgefüllt werden.", | 16 | "validation.message.empty_field": "Dieses Feld muss ausgefüllt werden.", |
| 16 | "validation.message.not_int": "Wert muss eine ganze Zahl sein.", | 17 | "validation.message.not_int": "Wert muss eine ganze Zahl sein.", |
diff --git a/enigma/src/main/resources/lang/en_us.json b/enigma/src/main/resources/lang/en_us.json index 9b12f42..c2a739c 100644 --- a/enigma/src/main/resources/lang/en_us.json +++ b/enigma/src/main/resources/lang/en_us.json | |||
| @@ -79,6 +79,7 @@ | |||
| 79 | 79 | ||
| 80 | "editor.decompiling": "Decompiling...", | 80 | "editor.decompiling": "Decompiling...", |
| 81 | "editor.decompile_error": "An error was encountered while decompiling.", | 81 | "editor.decompile_error": "An error was encountered while decompiling.", |
| 82 | "editor.remap_error": "An error was encountered while remapping.", | ||
| 82 | 83 | ||
| 83 | "info_panel.classes.obfuscated": "Obfuscated Classes", | 84 | "info_panel.classes.obfuscated": "Obfuscated Classes", |
| 84 | "info_panel.classes.deobfuscated": "De-obfuscated Classes", | 85 | "info_panel.classes.deobfuscated": "De-obfuscated Classes", |