From a83bbfd5c510367a194073b1db132022cacf65ed Mon Sep 17 00:00:00 2001 From: jeff Date: Tue, 30 Sep 2014 00:25:36 -0400 Subject: fixed nasty issue with renaming inner classes, but alas, more bugs remain --- src/cuchaz/enigma/mapping/ClassMapping.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/cuchaz/enigma/mapping/ClassMapping.java') diff --git a/src/cuchaz/enigma/mapping/ClassMapping.java b/src/cuchaz/enigma/mapping/ClassMapping.java index 88106df..ee02781 100644 --- a/src/cuchaz/enigma/mapping/ClassMapping.java +++ b/src/cuchaz/enigma/mapping/ClassMapping.java @@ -37,7 +37,7 @@ public class ClassMapping implements Serializable, Comparable public ClassMapping( String obfName, String deobfName ) { m_obfName = obfName; - m_deobfName = NameValidator.validateClassName( deobfName ); + m_deobfName = NameValidator.validateClassName( deobfName, false ); m_innerClassesByObf = Maps.newHashMap(); m_innerClassesByDeobf = Maps.newHashMap(); m_fieldsByObf = Maps.newHashMap(); @@ -57,7 +57,7 @@ public class ClassMapping implements Serializable, Comparable } public void setDeobfName( String val ) { - m_deobfName = NameValidator.validateClassName( val ); + m_deobfName = NameValidator.validateClassName( val, false ); } //// INNER CLASSES //////// @@ -70,10 +70,12 @@ public class ClassMapping implements Serializable, Comparable public void addInnerClassMapping( ClassMapping classMapping ) { + assert( isSimpleClassName( classMapping.getObfName() ) ); boolean obfWasAdded = m_innerClassesByObf.put( classMapping.getObfName(), classMapping ) == null; assert( obfWasAdded ); if( classMapping.getDeobfName() != null ) { + assert( isSimpleClassName( classMapping.getDeobfName() ) ); boolean deobfWasAdded = m_innerClassesByDeobf.put( classMapping.getDeobfName(), classMapping ) == null; assert( deobfWasAdded ); } @@ -92,6 +94,7 @@ public class ClassMapping implements Serializable, Comparable public ClassMapping getOrCreateInnerClass( String obfName ) { + assert( isSimpleClassName( obfName ) ); ClassMapping classMapping = m_innerClassesByObf.get( obfName ); if( classMapping == null ) { @@ -104,16 +107,19 @@ public class ClassMapping implements Serializable, Comparable public ClassMapping getInnerClassByObf( String obfName ) { + assert( isSimpleClassName( obfName ) ); return m_innerClassesByObf.get( obfName ); } public ClassMapping getInnerClassByDeobf( String deobfName ) { + assert( isSimpleClassName( deobfName ) ); return m_innerClassesByDeobf.get( deobfName ); } public String getObfInnerClassName( String deobfName ) { + assert( isSimpleClassName( deobfName ) ); ClassMapping classMapping = m_innerClassesByDeobf.get( deobfName ); if( classMapping != null ) { @@ -124,6 +130,7 @@ public class ClassMapping implements Serializable, Comparable public String getDeobfInnerClassName( String obfName ) { + assert( isSimpleClassName( obfName ) ); ClassMapping classMapping = m_innerClassesByObf.get( obfName ); if( classMapping != null ) { @@ -134,6 +141,7 @@ public class ClassMapping implements Serializable, Comparable public void setInnerClassName( String obfName, String deobfName ) { + assert( isSimpleClassName( obfName ) ); ClassMapping classMapping = getOrCreateInnerClass( obfName ); if( classMapping.getDeobfName() != null ) { @@ -143,6 +151,7 @@ public class ClassMapping implements Serializable, Comparable classMapping.setDeobfName( deobfName ); if( deobfName != null ) { + assert( isSimpleClassName( deobfName ) ); boolean wasAdded = m_innerClassesByDeobf.put( deobfName, classMapping ) == null; assert( wasAdded ); } @@ -442,4 +451,9 @@ public class ClassMapping implements Serializable, Comparable } return false; } + + public static boolean isSimpleClassName( String name ) + { + return name.indexOf( '/' ) < 0 && name.indexOf( '$' ) < 0; + } } -- cgit v1.2.3