diff --git a/recaf-core/src/main/java/software/coley/recaf/services/mapping/format/EnigmaMappings.java b/recaf-core/src/main/java/software/coley/recaf/services/mapping/format/EnigmaMappings.java index 683712fa1..76c484947 100644 --- a/recaf-core/src/main/java/software/coley/recaf/services/mapping/format/EnigmaMappings.java +++ b/recaf-core/src/main/java/software/coley/recaf/services/mapping/format/EnigmaMappings.java @@ -15,6 +15,8 @@ /** * Enigma mappings file implementation. + *
+ * Specification: enigma_mappings
*
* @author Matt Coley
*/
@@ -71,12 +73,17 @@ public IntermediateMappings parse(@Nonnull String mappingText) {
break;
case "FIELD":
// Check if no longer within inner-class scope
- if (strIndent < currentClass.size()) {
+ if (strIndent < currentClass.size())
currentClass.pop();
- }
+
// Parse field
if (currentClass.empty())
throw new IllegalArgumentException(FAIL + "could not map field, no class context");
+
+ // Skip if there aren't enough arguments to pull the necessary items
+ if (args.length < 4)
+ continue;
+
String currentField = removeNonePackage(args[1]);
String renamedField = removeNonePackage(args[2]);
String currentFieldDesc = removeNonePackage(args[3]);
@@ -84,15 +91,22 @@ public IntermediateMappings parse(@Nonnull String mappingText) {
break;
case "METHOD":
// Check if no longer within inner-class scope
- if (strIndent < currentClass.size()) {
+ if (strIndent < currentClass.size())
currentClass.pop();
- }
+
// Parse method
if (currentClass.empty())
throw new IllegalArgumentException(FAIL + "could not map method, no class context");
+
+ // Skip if there aren't enough arguments to pull the necessary items
+ if (args.length < 4)
+ continue;
+
+ // Skip constructors/initializers
String currentMethod = args[1];
- if (currentMethod.equals("