diff options
| author | 2016-10-27 19:28:10 +0200 | |
|---|---|---|
| committer | 2016-10-27 19:28:10 +0200 | |
| commit | 72bdd3caa5bc21e4830e764eaf804bd42cedf23e (patch) | |
| tree | ecffb6d1b10a7f85216217020254af0781865edb /src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java | |
| parent | Rework saving system to improve saving time (Fix #35) (diff) | |
| download | enigma-fork-72bdd3caa5bc21e4830e764eaf804bd42cedf23e.tar.gz enigma-fork-72bdd3caa5bc21e4830e764eaf804bd42cedf23e.tar.xz enigma-fork-72bdd3caa5bc21e4830e764eaf804bd42cedf23e.zip | |
Rework setFieldName to only check name in the actual class mapping and mothers classes mappings (Fix #51)
Diffstat (limited to 'src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java b/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java index 5c299e3..4e812b1 100644 --- a/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java +++ b/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java | |||
| @@ -90,8 +90,23 @@ public class MappingsRenamer { | |||
| 90 | public void setFieldName(FieldEntry obf, String deobfName) { | 90 | public void setFieldName(FieldEntry obf, String deobfName) { |
| 91 | deobfName = NameValidator.validateFieldName(deobfName); | 91 | deobfName = NameValidator.validateFieldName(deobfName); |
| 92 | FieldEntry targetEntry = new FieldEntry(obf.getClassEntry(), deobfName, obf.getType()); | 92 | FieldEntry targetEntry = new FieldEntry(obf.getClassEntry(), deobfName, obf.getType()); |
| 93 | if (m_mappings.containsDeobfField(obf.getClassEntry(), deobfName, obf.getType()) || m_index.containsObfField(targetEntry)) { | 93 | ClassEntry definedClass = null; |
| 94 | throw new IllegalNameException(deobfName, "There is already a field with that name"); | 94 | if (m_mappings.containsDeobfField(obf.getClassEntry(), deobfName) || m_index.containsEntryWithSameName(targetEntry)) |
| 95 | definedClass = obf.getClassEntry(); | ||
| 96 | else { | ||
| 97 | for (ClassEntry ancestorEntry : this.m_index.getTranslationIndex().getAncestry(obf.getClassEntry())) { | ||
| 98 | if (m_mappings.containsDeobfField(ancestorEntry, deobfName) || m_index.containsEntryWithSameName(targetEntry.cloneToNewClass(ancestorEntry))) { | ||
| 99 | definedClass = ancestorEntry; | ||
| 100 | break; | ||
| 101 | } | ||
| 102 | } | ||
| 103 | } | ||
| 104 | |||
| 105 | if (definedClass != null) { | ||
| 106 | String className = m_mappings.getTranslator(TranslationDirection.Deobfuscating, m_index.getTranslationIndex()).translateClass(definedClass.getClassName()); | ||
| 107 | if (className == null) | ||
| 108 | className = definedClass.getClassName(); | ||
| 109 | throw new IllegalNameException(deobfName, "There is already a field with that name in " + className); | ||
| 95 | } | 110 | } |
| 96 | 111 | ||
| 97 | ClassMapping classMapping = getOrCreateClassMapping(obf.getClassEntry()); | 112 | ClassMapping classMapping = getOrCreateClassMapping(obf.getClassEntry()); |